如何合併包含一個公共列的多個 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 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告