如何合并包含一个公共列的多个 R 数据框?


要合并包含一个公共列的多个 R 数据框,我们可以按照以下步骤操作:

  • 首先,创建多个数据框。
  • 然后,使用 plyr 包中的 join_all 函数来合并数据框。

创建数据框

让我们创建一个如下所示的数据框:

 在线演示

> x<-sample(LETTERS[1:4],10,replace=TRUE)
> y1<-rpois(10,5)
> df1<-data.frame(x,y1)
> df1

执行上述脚本后,将生成以下输出(由于随机化,此输出会在您的系统上有所不同):

   x y1
1  A  6
2  B 10
3  A  4
4  C  5
5  C  3
6  C  6  
7  B  2
8  B 10
9  D  1
10 D  3

让我们创建一个名为 df2 的数据框,如下所示:

 在线演示

> x<-sample(LETTERS[1:10],10)
> y2<-rpois(10,5)
> df2<-data.frame(x,y2)
> df2

执行上述脚本后,将生成以下输出(由于随机化,此输出会在您的系统上有所不同):

   x y2
1  E  2
2  A  7
3  I  0
4  H  6
5  C  4
6  D 10
7  J  3
8  G  5
9  F  4
10 B  5 

让我们创建一个名为 df3 的数据框,如下所示:

> x<-sample(LETTERS[1:5],10,replace=TRUE)
> y3<-rpois(10,2)
> df3<-data.frame(x,y3)
> df3

执行上述脚本后,将生成以下输出(由于随机化,此输出会在您的系统上有所不同):

   x  y3
1  C 1
2  C 4
3  A 2
4  C 1
5  C 1
6  B 0
7  D 2
8  D 3
9  D 4
10 D 0

让我们创建一个名为 df4 的数据框,如下所示:

 在线演示

> x<-sample(LETTERS[1:8],10,replace=TRUE)
> y4<-rpois(10,8)
> df4<-data.frame(x,y4)
> df4

执行上述脚本后,将生成以下输出(由于随机化,此输出会在您的系统上有所不同):

  x y4
1 G 7
2 B 9
3 G 6
4 G 8
5 G 9
6 F 11
7 H 10
8 D 10
9 E 7
10 E 9

合并所有数据框

使用 join_all 函数列出数据框,并使用 list 函数将它们合并:

> library(plyr)
> df<-join_all(list(df1,df2,df3,df4),by="x",type="inner")
> df
   x y1 y2 y3 y4
1  B 10 5 0  9
2  B 2  5 0  9
3  B 10 5 0  9
4  D 1 10 2 10
5  D 1 10 3 10
6  D 1 10 4 10
7  D 1 10 0 10
8  D 3 10 2 10
9  D 3 10 3 10
10 D 3 10 4 10
11 D 3 10 0 10

更新于:2021年8月13日

606 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告