使用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.
答案 0 :(得分:24)
您可以使用crossing
中的tidyr
:
crossing(df_a,df_b)
department period
1 1 2014
2 1 2015
3 1 2016
4 1 2017
5 2 2014
6 2 2015
7 2 2016
8 2 2017
9 3 2014
10 3 2015
11 3 2016
12 3 2017
13 4 2014
14 4 2015
15 4 2016
16 4 2017