我必须对dataframe
进行突变,并根据列中的某个单词Health
添加列。当我在R
和dplyr
中运行该代码时,该代码运行良好,但在使用sparklyr时,该代码未运行。这是我第一次使用sparklyr
。我怎样才能解决这个问题?
bmk_tbl %>% add_column(healthcare = case_when(
grepl("Health", .$OrganizationType) ~ 1,
TRUE ~ 0), .after = "OrganizationType")
我收到以下错误,并且我不知道如何解决它
Error in if (nrow(df) != nrow(.data)) { : missing value where TRUE/FALSE needed
我不确定该怎么做,所以我尝试做这样的事情:
bmk_tbl %>% add_column(healthcare = case_when(
(.$OrganizationType %in% c("Health") ~ 1),
TRUE ~ 0), .after = "OrganizationType")
但是这行不通,因为数据库中没有单个单词Health
。它总是与其他多个单词混合在一起。
您在这里有两个不相关的问题:
add_column
之类的可变基元仅适用于data.frames
,而tbl_spark
不是一个。这说明了以下错误:
Error in if (nrow(df) != nrow(.data)) { : missing value where TRUE/FALSE needed
实际上,您还应该在第一次调用时看到随附的警告
In addition: Warning message:
`.data` must be a data frame in `add_column()`.
此处使用的正确功能是mutate
。
grepl
不是SQL原语中的translated。 Instead you should use grepl
组合
grepl
或简单地
data <- copy_to(sc, iris, overwrite=TRUE)
data %>%
mutate(match = case_when(
Species %rlike% "tos" ~ 1,
TRUE ~ 0
))