合并R中的多个数据帧

时间:2016-04-20 01:11:15

标签: r

我需要将多个数据框与列A中的匹配值合并。什么是最有效的方法来获得result

DF1

A  B  C
2  x  r
1  c  r
3  y  t

DF2

A  D  E
3  e  y
1  t  t 
2  y  t

DF3

A  F  G
1  g  y
2  f  y
3  h  k

结果

A  B  C  D  E  F  G  
1  c  r  t  t  g  y
2  x  r  y  t  f  y
3  y  t  y  t  h  k

1 个答案:

答案 0 :(得分:2)

一种解决方案是使用dplyr包,它是inner_join,如下所示:

library(dplyr)
df <- inner_join(df1, df2)
df <- inner_join(df, df3)

产生的结果是:

df
  A B C D E F G
1 2 x r y t f y
2 1 c r t t g y
3 3 y t e y h k

注意,inner_join仅保留A匹配的行。

如果您希望按列A排列,可以添加以下行:

arrange(df, A)
  A B C D E F G
1 1 c r t t g y
2 2 x r y t f y
3 3 y t e y h k

要合并一个可变长度的数据框列表,看起来Reduce可以与上面的inner_join一起使用:

df <- Reduce(inner_join, list(df1, df2, df3))
arrange(df, A)
  A B C D E F G
1 1 c r t t g y
2 2 x r y t f y
3 3 y t e y h k