从许多数据帧的列中创建R中的新数据帧

时间:2017-09-09 10:01:07

标签: r

我有150个数据帧,我想要提取名为' egn'从每个数据帧中创建一个包含50列的新数据帧(列' egn'来自每个数据帧)。列数在20到25之间变化,行数在11000到13000之间变化。

每个数据帧都命名为:a1,a2,a3,...,a50。 每个数据框中的列具有相同的名称,我希望提取名为egn的所有列。

这是我写的R代码:

  newdataframe = 0
  for(i in 1:45) {
  txt = paste0("a.", i, "$egn")
  newdataframe= cbind(egn, eval(parse(text = txt)))
}

我在代码中的不同列上尝试了此代码,每列产生不同的结果,范围从仅包含3列的数据帧,包含46列的数据帧和包含1列的数据帧。 任何帮助将不胜感激。

注意,我认为问题出现在我使用cbind上。我一直在研究函数aggregate()和merge()。

由于

1 个答案:

答案 0 :(得分:1)

listmget(paste0("a", 1:50)))中获取数据集,并从每个数据集中提取“egn”列,将其转换为data.frame

data.frame(lapply(mget(paste0("a", 1:50)), `[`, "egn"))

如果每个数据集中的行数不相同,请使用cbind.fill中的rowr

library(rowr)
do.call(cbind.fill, c(lapply(mget(paste0("a", 1:50)), `[`, "egn"), fill = NA))

数据

for(i in seq_len(50)) assign(paste0("a", i),
  value = as.data.frame(matrix(rnorm(50*5), ncol = 50, 
      dimnames = list(NULL, sample(c(paste0("V", 1:49), "egn"))))))
相关问题