如何使用Sparklyr在数据框中添加列?

问题描述 投票:0回答:1

我必须对dataframe进行突变,并根据列中的某个单词Health添加列。当我在Rdplyr中运行该代码时,该代码运行良好,但在使用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。它总是与其他多个单词混合在一起。

r dplyr sparklyr
1个回答
0
投票

您在这里有两个不相关的问题:

  • 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原语中的translatedInstead you should use grepl

组合

grepl

或简单地

data <- copy_to(sc, iris, overwrite=TRUE)

data %>% 
  mutate(match = case_when(
    Species %rlike% "tos" ~ 1,
    TRUE ~ 0
  ))
© www.soinside.com 2019 - 2024. All rights reserved.