使用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.
Run Code Online (Sandbox Code Playgroud)
Pie*_*nte 26
您可以使用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
Run Code Online (Sandbox Code Playgroud)