我有6个数据框,每列有2列,用于“id”和“value”以及不同的行数。 它们被标记为p1,p2 .... p6,看起来像这样
id value_p1
Jane C 9.713457e-01
Claire K 1.260160e-01
Brett F 4.933005e-0
Jen S 0.56
我现在有一个字符向量,它包含名为id_ intersect:
的所有6个数据集的名称交叉c("Jane C", "Claire K","Brett F")
我现在想要创建一个新数据框,它只是每个数据框中包含id_intersect的部分的子集,并在每个数据框中保留交叉ID的值。
id value_p1 value_p2.............value_p6
Jane C 9.713457e-01 0.87 .098
Claire K 1.260160e-01 0.89 .005
Brett F 4.933005e-0 0.002 .035
我真的坚持这个,我对R很新,所以任何帮助都非常感激。 感谢。
答案 0 :(得分:2)
您可以在Reduce
使用merge
,
ll <- list(p1,p2,...,p6)
Reduce(merge,ll) ##
这是一个可重复的例子。首先,我在列表中创建数据框
ll <- lapply(1:6, function(x) {
id <- c(letters[1:3],letters[3+x])
dat <- data.frame(id=id, value=rnorm(4))
names(dat) <- c('id',paste('value',x,sep='_'))
dat
})
然后
Reduce(merge,ll)
id value_1 value_2 value_3 value_4 value_5 value_6
1 Brett F -0.09242725 -0.03908275 0.5366957 0.4926749 0.830829230 1.4868564
2 Claire K -0.27487913 -0.13733120 -0.2708968 0.1720550 -0.003194644 -0.6328486
3 Jane C -1.56306487 -0.75655434 0.1806619 0.2482159 -1.075606294 1.9711559