使用dplyr full_join()
操作,我试图执行一个基本的merge()
操作,其中不存在公共变量(无法满足“by=”参数),这将混合两个 Dataframe 并返回所有可能的组合。
但是,当前的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.
2条答案
按热度按时间mftmpeh81#
您可以使用
tidyr
中的crossing
:pod7payv2#
如果存在重复行,
crossing
不会给予与merge
相同的结果。相反,使用
full_join
和by = character()
执行交叉连接,生成df_a
和df_b
的所有组合。merge
不执行重复数据消除。crossing
删除重复行。full_join
也不会删除重复项。创建于2023年1月13日,使用reprex v2.0.2