【发布时间】:2017-06-29 19:56:26
【问题描述】:
使用 dplyr full_join() 操作,我试图执行基本的 merge() 操作的等效项,其中不存在公共变量(无法满足“by =”参数)。这将混合两个数据框并返回所有可能的组合。
但是,当前的full_join() 函数需要一个公共变量。我无法找到另一个可以帮助解决此问题的 dplyr 函数。 如何使用特定于 dplyr 库的函数执行此操作?
df_a = data.frame(department=c(1,2,3,4))
df_b = data.frame(period=c(2014,2015,2016,2017))
#This works as desired
big_df = merge(df_a,df_b)
#I'd like to perform the following in a much bigger operation:
big_df = dplyr::full_join(df_a,df_b)
#Error: No common variables. Please specify `by` param.
【问题讨论】:
-
这是一种愚蠢的方法,但你可以在每一侧创建一个恒定的变量并在其上合并...
df_a$dummy = 1df_b$dummy = 1,然后在dummy上合并 -
是的,这是次优的,但到目前为止,它似乎是仅使用
dplyr的唯一方法。 -
实际上有一个open issue 向 dplyr 添加交叉连接功能