R 如何将2个df合并为2个非唯一列

R 如何将2个df合并为2个非唯一列,r,dataframe,join,merge,dplyr,R,Dataframe,Join,Merge,Dplyr,我有两个数据帧: df1=data.frame(col1=c('A', 'A', 'B', 'B', 'B'), col2a=c(1, 4, 3, 2, 5)) df2=data.frame(col1=c('A', 'A', 'A', 'B', 'B'), col2b=c('a', 'd', 'c', 'b', 'e')) 我想要一个这样的结果: df3=data.frame(col1=c('A', 'A', 'A', 'A',

我有两个数据帧:

df1=data.frame(col1=c('A', 'A', 'B', 'B', 'B'), 
               col2a=c(1, 4, 3, 2, 5))
df2=data.frame(col1=c('A', 'A', 'A', 'B', 'B'), 
               col2b=c('a', 'd', 'c', 'b', 'e'))
我想要一个这样的结果:

df3=data.frame(col1=c('A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B'),
               col2b=c('a', 'a', 'd', 'd', 'c', 'c', 'b', 'b', 'b', 'e', 'e', 'e'),
               col2a=c(1, 4, 1, 4, 1, 4, 3, 2, 5, 3, 2, 5))

我曾尝试按col1列对df1和df2使用merge(),但它不起作用,因为col1是非唯一列。有人能帮我吗?

一个
dplyr
解决方案是

dplyr::full_join(df1, df2)
输出

#    col1 col2a col2b
# 1     A     1     a
# 2     A     1     d
# 3     A     1     c
# 4     A     4     a
# 5     A     4     d
# 6     A     4     c
# 7     B     3     b
# 8     B     3     e
# 9     B     2     b
# 10    B     2     e
# 11    B     5     b
# 12    B     5     e

在base R中,为了获得相同的输出,可以使用

merge(df1, df2)

一个
dplyr
解决方案是

dplyr::full_join(df1, df2)
输出

#    col1 col2a col2b
# 1     A     1     a
# 2     A     1     d
# 3     A     1     c
# 4     A     4     a
# 5     A     4     d
# 6     A     4     c
# 7     B     3     b
# 8     B     3     e
# 9     B     2     b
# 10    B     2     e
# 11    B     5     b
# 12    B     5     e

在base R中,为了获得相同的输出,可以使用

merge(df1, df2)

你想要完全加入吗<代码>合并(df1,df2,by='col1',all=TRUE)@Hunaidkhan:对不起,我编辑了它already@RonakShah我不能这样做,因为col1是一个非唯一列。我得到了一个由多个实际参数匹配的“形式参数”y的错误。对于您共享的数据,我没有得到该错误。@Ronaksah非常感谢,我已经可以用您的解决方案做到这一点:)您想要完全联接吗<代码>合并(df1,df2,by='col1',all=TRUE)@Hunaidkhan:对不起,我编辑了它already@RonakShah我不能这样做,因为col1是一个非唯一列。我得到了一个由多个实际参数匹配的“形式参数”y的错误。对于您共享的数据,我没有得到该错误。@Ronaksha非常感谢您,我已经可以用您的解决方案做到这一点:)