如何在 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+ 浏览量

启动您的 事业

完成课程以获得认证

开始
广告