如何在 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
广告