使用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.
解决方法
你可以使用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