在没有公共变量的情况下执行dplyr full_join以混合数据帧

前端之家收集整理的这篇文章主要介绍了在没有公共变量的情况下执行dplyr full_join以混合数据帧前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用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

猜你在找的MsSQL相关文章