R和dplyr:如何对外部数据帧使用ifelse条件
我使用dplyr和spark通过mutate命令创建一个新变量。如果变量R和dplyr:如何对外部数据帧使用ifelse条件,r,dataframe,apache-spark,dplyr,R,Dataframe,Apache Spark,Dplyr,我使用dplyr和spark通过mutate命令创建一个新变量。如果变量my_data_变量的值位于另一个数据帧other_df$one_列的列内,则此新变量new_变量是分类变量,必须是ALFA。因此,如果其值为 它不包括在值中属于other_df$one_列 我所做的一个例子: my_data %>% mutate(new_variable = ifelse(my_data_variable == other_df$one_column, "ALFA","BETA"))
my_data_变量
的值位于另一个数据帧other_df$one_列
的列内,则此新变量new_变量
是分类变量,必须是ALFA
。因此,如果其值为
它不包括在值中属于other_df$one_列
我所做的一个例子:
my_data %>%
mutate(new_variable = ifelse(my_data_variable == other_df$one_column, "ALFA","BETA"))
但不幸的是我犯了这个错误。甚至使用!!其他_-df$one_列
或本地(其他_-df[['one_列]]])
而不是other_df$one_列
不起作用
Error: Cannot embed a data frame in a SQL query.
If you are seeing this error in code that used to work, the most likely cause is a change dbplyr 1.4.0. Previously `df$x` or
`df[[y]]` implied that `df` was a local variable, but now you must make that explict with `!!` or `local()`, e.g., `!!df$x` or
`local(df[["y"]))
有没有替代ifelse函数的方法来获得预期结果?感谢@Ronaksah的帮助。解决方案如下:
my_data %>%
mutate(new_variable = ifelse(my_data_variable %in% !!other_df$one_column, "ALFA","BETA"))
不确定这是否适用于spark,但如果您在
其他_df$one_列中有多个值
您可能应该使用我的_数据%>%mutate(new_variable=ifelse(my_data_variable%在%other_df$one_列中,“ALFA”,“BETA”)
@RonakShah多亏了您的帮助,我现在找到了解决方案。解决方案是:my_data%>%mutate(new_variable=ifelse(my_data_variable%in%!!其他_df$one_列,“ALFA”,“BETA”))太棒了!您可能应该将其添加为答案。@PabloPicciau,只需将您的解决方案添加到下面的您的答案区域,然后您就可以验证它;)