I am trying to extract values from one dataframe to use in another dataframe and am getting the following error
Error in `mutate()`:
! Problem while computing `Value = case_when(row_number() == 1 ~ val_1, row_number() == 2 ~
val_2)`.
Caused by error in `[.data.frame`:
! undefined columns selected
Here is the syntax that I am using
test %>% mutate(Value = case_when(row_number() == 1 ~ val_1,
row_number() == 2 ~ val_2))
Here is the dput of test
structure(list(ID = c("47ae3cc00d8515d4cbab4704bf7e6b79", "47ae3cc00d8515d4cbab4704bf7e6b79",
"47ae3cc00d8515d4cbab4704bf7e6b79", "47ae3cc00d8515d4cbab4704bf7e6b79"
), Book = c("MyBookie.ag", "MyBookie.ag", "Pinnacle", "Pinnacle"
), Home = c("Kansas St Wildcats", "Kansas St Wildcats", "Kansas St Wildcats",
"Kansas St Wildcats"), Away = c("Michigan St Spartans", "Michigan St Spartans",
"Michigan St Spartans", "Michigan St Spartans"), Team = c("Kansas St Wildcats",
"Michigan St Spartans", "Kansas St Wildcats", "Michigan St Spartans"
), Price = c(-110, -110, -114, 100), Points = c(1.5, -1.5, 1.5,
-1.5), BEP = c(0.523809524, 0.523809524, 0.53271028, 0.5), Fair_Price = c(100,
100, -106.5420561, 106.5420561), Fair_BEP = c(0.5, 0.5, 0.515837104,
0.484162896), Hold = c(0.045454545, 0.045454545, 0.031674208,
0.031674208), Win = c(90.91, 90.91, 87.72, 100)), row.names = c(NA,
-4L), spec = structure(list(cols = list(ID = structure(list(), class =
c("collector_character",
"collector")), Book = structure(list(), class = c("collector_character",
"collector")), Home = structure(list(), class = c("collector_character",
"collector")), Away = structure(list(), class = c("collector_character",
"collector")), Team = structure(list(), class = c("collector_character",
"collector")), Price = structure(list(), class = c("collector_double",
"collector")), Points = structure(list(), class = c("collector_double",
"collector")), BEP = structure(list(), class = c("collector_double",
"collector")), Fair_Price = structure(list(), class = c("collector_double",
"collector")), Fair_BEP = structure(list(), class = c("collector_double",
"collector")), Hold = structure(list(), class = c("collector_double",
"collector")), Win = structure(list(), class = c("collector_double",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), delim = ","), class = "col_spec"), problems = <pointer: 0x00000153a4920d20>,
class = c("spec_tbl_df",
"tbl_df", "tbl", "data.frame"))
Here is the dput of val_1
structure(list(Fair_BEP = -51.5617029958564), class = "data.frame", row.names = c(NA,
-1L))
val_1 <- (test[4,10] * test[2,11]) - (test[3,10] * 100)
and the dput of val_2
structure(list(Fair_BEP = -48.3928424591436), class = "data.frame", row.names = c(NA,
-1L))
val_2 <- (test[3,10] * test[1,11]) - (test[4,10] * 100)
It appears that because val_1 and val_2 both have a column name it causes the case_when command to fail. If I assign the following values to val_1 and val_2 then the case_when executes just fine.
val_1 <- -51.5617
val_2 <- -48.39284
Can someone provide some guidance or a better way to go about this?
Based on the structure, it is a data.frame with a single column value.
> str(val_1)
'data.frame': 1 obs. of 1 variable:
$ Fair_BEP: num -51.6
We could either unlist or use [[ to extract the value - case_when checks for the type.
test %>%
mutate(Value = case_when(row_number() == 1 ~ val_1[[1]],
row_number() == 2 ~ val_2[[1]]))
-output
# A tibble: 4 × 13
ID Book Home Away Team Price Points BEP Fair_…¹ Fair_…² Hold Win Value
<chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 47ae3cc00d8515d4cbab4704bf7e6b79 MyBookie.ag Kansas St Wildcats Michig… Kans… -110 1.5 0.524 100 0.5 0.0455 90.9 -51.6
2 47ae3cc00d8515d4cbab4704bf7e6b79 MyBookie.ag Kansas St Wildcats Michig… Mich… -110 -1.5 0.524 100 0.5 0.0455 90.9 -48.4
3 47ae3cc00d8515d4cbab4704bf7e6b79 Pinnacle Kansas St Wildcats Michig… Kans… -114 1.5 0.533 -107. 0.516 0.0317 87.7 NA
4 47ae3cc00d8515d4cbab4704bf7e6b79 Pinnacle Kansas St Wildcats Michig… Mich… 100 -1.5 0.5 107. 0.484 0.0317 100 NA
# … with abbreviated variable names ¹Fair_Price, ²Fair_BEP
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With