加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 07:30:46 所属栏目:MsSql教程 来源:网络整理
导读:使用dplyr full_join()操作,我试图执行基本的merge()操作的等效操作,其中不存在公共变量(无法满足“by =”参数).这将混合两个数据帧并返回所有可能的组合. 但是,当前的full_join()函数需要一个公共变量.我无法找到另一个可以帮助解决此问题的dplyr函数.如何使
使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读