【问题标题】:Rename columns with filenames while merging many tables in R using Reduce使用 Reduce 合并 R 中的许多表时用文件名重命名列
【发布时间】:2016-09-07 05:05:22
【问题描述】:

我像这样阅读所有文件:

tables <- lapply(files, function(x) read.table(x, col.names=c("unit","count")))

我稍后将使用列unit 合并它们。但是,我希望我可以使用来自变量files 的原始文件名而不是count 作为第二列。那是因为我稍后会像这样执行合并:

MyMerge <- function(x, y){
  df <- merge(x, y, by="unit", all.x= TRUE, all.y= TRUE)
  return(df)
}

data <- Reduce(MyMerge, tables)

这会导致问题,因为merge 函数无法处理超过 3 个非唯一列名(这些名称变为 count.x、count.y 和 count,因此我的脚本无法处理超过 3 个文件)。

【问题讨论】:

  • 只做 col.names = c('unit', x) 还不够吗?这将使用第一个列单元和第二列读取文件的名称
  • 绝对是!!谢谢你。如果您将此添加为答案,我可以接受。

标签: r merge reduce read.table


【解决方案1】:

应该就这么简单:

tables <- lapply(files, function(x) read.table(x, col.names=c("unit", x)))

也许您还想在将其添加为列名之前清理一下文件名:

col.names=c("unit", gsub('\\.csv', '', x))

如果您想从列名或类似名称中删除 .csv

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-15
    • 2015-02-05
    • 2015-10-23
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 2019-09-03
    相关资源
    最近更新 更多