0

我有 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

我现在有一个字符向量,其中包含所有 6 个数据集的名称相交,称为 id_ intersect:

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 很陌生,所以非常感谢任何帮助。谢谢。

4

1 回答 1

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
于 2013-04-05T18:23:45.720 回答