将数据帧与R中的缺失合并(在主题设计中)

时间:2013-08-29 10:07:42

标签: r select dataframe missing-data na

我在R中有10个数据帧用于10个测试,它们都包含一个ID变量作为字符串,三个变量t1t2t3都是测量时间。

并非所有数据帧都包含所有ID。

我想从10个数据帧中创建三个数据帧

  • 第一个包含来自所有数据帧的t1变量,第二个包含t2变量,第三个包含t3变量
  • 以ID varaible命令
  • 使用NA,其中一个数据帧不包含一个ID可变的值。

由于存在缺失(并非所有参与者都参与了所有测试),因此我无法使用merge()cbind(),而我对sqldf()的尝试出错了。 我也不知道哪个ID变量我在所有10个数据帧中都有值。 我有点困惑 - >谢谢你的想法!!

1 个答案:

答案 0 :(得分:0)

我将使用这个可重复的例子:

set.seed(42)
d <- replicate(n=10, list(data.frame(ID=rbinom(5,20,0.5), t1=runif(5), t2=runif(5), t3=runif(5))))

请注意,这是一个数据帧列表。如果您的表格是分开的,您可以使用d <- list(dataframe1, dataframe2, ...)

之类的内容重现这一点

首先我们将变量t1t2重命名为t1.it2.i,其中i是数据帧的索引,以避免混淆:< / p>

for(i in seq(d)) names(d[[i]])[-1] <- paste(names(d[[i]])[-1], i, sep=".")

现在我们合并所有这些:

big <- Reduce(function(x,y)merge(x,y,all=TRUE), d)

这是一个包含31列的大表(每个数据帧ID加3 t),对于不存在的值填充NA,按ID排序(默认为{ {1}})。

现在你可以将其分组以获得你想要的东西:

merge