【问题标题】:R repeatedly adding similar column from different data frames into one data frameR重复将来自不同数据帧的相似列添加到一个数据帧中
【发布时间】:2017-08-14 11:28:15
【问题描述】:

我有 10 个数据集:prediction1.csv、prediction2.csv、...它们都有相似的列,例如 a、b、c..

我想将每个数据集中的“a”列添加到组合数据框“评估”中,并相应地重命名它们 a1、a2、a3..

到目前为止我尝试过的是:

我在数据集中红色。这部分工作正常

for(i in 1:10){
  assign(paste("pred.", i, sep = ""), read_csv(paste0("prediction", i, ".csv")))    
}

我尝试将新列分配给“评估”数据框,但这不起作用,它会创建变量 evaluating[a1] 而不是向数据框添加变量

for(i in 1:10){  
    assign(paste("evaluating[a.", i,"],"), paste0("pred.",i,"$a" )) 
}

【问题讨论】:

  • 您想要一个a 列还是多个a 列,如果是后者,所有数据帧的行数是否相同?
  • 所有这 10 个数据集都是模型的输出,即它们都有相同的列名。我对他们每个人的“a”列感兴趣,并且评估数据框架中包含真实值。所以我想要一个数据框,它具有真实的 a、来自 df1 的 a、来自 df2 的 a、来自 df3 的 a 等。

标签: r for-loop sapply


【解决方案1】:

如果您只想要每个 data.frame 的 a 列,您可以尝试:

files = paste0("prediction",1:10,".csv")

data = lapply(seq_along(files),function(x) {
    dat = read.csv2(paste0("path/to/file/",files[x]))
    dat = data.frame(dat$a) ; colnames(dat) = paste0("a",x)
    return(dat)
})

do.call(rbind,data)

对于这种方法,所有prediction data.frames 需要具有相同数量的行以及一个名为a 的列。

【讨论】:

  • 数据中缺少右括号=.. 我认为它应该在 } 之后但是我收到以下错误: do.call(rbind, data) 中的错误:第二个参数必须是列表
  • 你能分享一个dput你的预测data.frames吗?
  • 我不确定 dput 是什么。但是,我发现我犯了错字。但是,在修复它时,我得到了下一个错误:名称错误
猜你喜欢
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 2020-09-26
  • 1970-01-01
  • 2019-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多