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非常感谢您,我已经可以用您的解决方案做到这一点:)