组合数据集

时间:2017-04-18 22:26:04

标签: r merge

我有15个数据集。第一列是"主题"并且在所有集合中都是相同的。其余列的数量在所有数据集中都不相同。我需要在单个数据帧中组合所有这些数据。我找到了命令" Reduce"但我只是从R开始,我无法理解这是否是我需要的,如果是,那么语法是什么?谢谢!

1 个答案:

答案 0 :(得分:0)

我建议将来添加reproducible example,以便其他人可以查看您正在使用的数据格式以及您尝试做的事情。

这是一些随机生成的示例数据,每个数据都包含"主题"柱:

list_of_dfs <- list(
   df1 = data.frame(Subject = 1:4, a = rnorm(4), b = rnorm(4)),
   df2 = data.frame(Subject = 5:8, c = rnorm(4), d = rnorm(4), e = rnorm(4)),
   df3 = data.frame(Subject = 7:10, f = rnorm(4)),
   df4 = data.frame(Subject = 2:5, g = rnorm(4), h = rnorm(4))
)
Reduce

merge是一个不错的选择:

combined_df <- Reduce(
  function(x, y) { merge(x, y, by = "Subject", all = TRUE) },
  list_of_dfs
)

输出:

> combined_dfs
   Subject          a          b          c           d         e          f          g          h
1        1  1.1106594  1.2530046         NA          NA        NA         NA         NA         NA
2        2 -1.0275630  0.6437101         NA          NA        NA         NA -1.9393347 -0.4361952
3        3  0.1558639  1.2792212         NA          NA        NA         NA -0.8861966  1.0137530
4        4  0.4283585 -0.1045530         NA          NA        NA         NA  1.8924896 -0.3788198
5        5         NA         NA 0.08261190  0.77058804 -1.165042         NA  0.7950784 -1.3467386
6        6         NA         NA 2.51214598  0.62024328  1.496520         NA         NA         NA
7        7         NA         NA 0.01581309 -0.04777196 -1.327884  1.5111734         NA         NA
8        8         NA         NA 0.80448136 -0.33347573 -2.290428 -0.3863564         NA         NA
9        9         NA         NA         NA          NA        NA -1.2371795         NA         NA
10      10         NA         NA         NA          NA        NA  1.6819063         NA         NA