如何在 R 中合併儲存在列表中的資料框?


要在 R 中合併儲存在列表中的資料框,我們可以在 Reduce 函式內部使用 dplyr 包的 full_join 函式。

例如,如果我們有一個名為 LIST 的列表,其中包含一些資料框,則可以使用以下命令合併這些資料框 −

Reduce(full_join,LIST)

檢視下面給出的示例以瞭解此命令的輸出。

示例

以下程式碼段建立一個示例資料框 −

df1<-data.frame(x=rpois(10,2),y=rpois(10,5),z=rpois(10,2))
df2<-data.frame(z=rpois(10,2),a=rpois(10,8),b=rpois(10,3))
df3<-data.frame(b=rpois(10,5),z=rpois(10,8),c=rpois(10,5))
List<-list(df1,df2,df3)
List

將建立以下資料框

[[1]]
   x  y z
 1 2  5 2
 2 1  3 0
 3 3  7 0
 4 6  3 2
 5 3  5 3
 6 0 10 0
 7 3  4 0
 8 1  5 1
 9 3  3 1
10 1  3 1
[[2]]
   z  a b
 1 0  7 3
 2 3  8 6
 3 2  9 4
 4 0  7 3
 5 6 14 1
 6 1  6 3
 7 0  7 2
 8 3  7 4
 9 2  6 3
10 1  9 3
[[3]]
  b   z c
 1 4  6 5
 2 5  9 4
 3 7  9 4
 4 4 10 10
 5 3  2 3
 6 7  8 7
 7 3  4 2
 8 5  7 9
 9 6  8 7
10 5 10 9

要在上面建立的資料框中載入 dplyr 包併合並存儲在列表中的資料框,請將以下程式碼新增到上述程式碼段中 −

df1<-data.frame(x=rpois(10,2),y=rpois(10,5),z=rpois(10,2))
df2<-data.frame(z=rpois(10,2),a=rpois(10,8),b=rpois(10,3))
df3<-data.frame(b=rpois(10,5),z=rpois(10,8),c=rpois(10,5))
List<-list(df1,df2,df3)
List
library(dplyr)
Reduce(full_join,List)
Joining, by = "z"
Joining, by = c("z", "b")

輸出

如果你將上述所有給定的程式碼段作為單個程式執行,則會生成以下輸出 −

    x  y  z  a b  c
 1  2  5  2  9 4 NA
 2  2  5  2  6 3  3
 3  1  3  0  7 3 NA
 4  1  3  0  7 3 NA
 5  1  3  0  7 2 NA
 6  3  7  0  7 3 NA
 7  3  7  0  7 3 NA
 8  3  7  0  7 2 NA
 9  6  3  2  9 4 NA
10  6  3  2  6 3  3
11  3  5  3  8 6 NA
12  3  5  3  7 4 NA
13  0 10  0  7 3 NA
14  0 10  0  7 3 NA
15  0 10  0  7 2 NA
16  3  4  0  7 3 NA
17  3  4  0  7 3 NA
18  3  4  0  7 2 NA
19  1  5  1  6 3 NA
20  1  5  1  9 3 NA
21  3  3  1  6 3 NA
22  3  3  1  9 3 NA
23  1  3  1  6 3 NA
24  1  3  1  9 3 NA
25 NA NA  6 14 1 NA
26 NA NA  6 NA 4  5
27 NA NA  9 NA 5  4
28 NA NA  9 NA 7  4
29 NA NA 10 NA 4 10
30 NA NA  8 NA 7  7
31 NA NA  4 NA 3  2
32 NA NA  7 NA 5  9
33 NA NA  8 NA 6  7
34 NA NA 10 NA 5  9

更新於: 05-11-2021

7K+ 瀏覽量

啟動您的 事業

完成課程以獲得認證

開始
廣告