使用Reduce合并R中的许多表时用文件名重命名列

标签 r merge reduce read.table

我像这样阅读了我的所有文件:

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 个文件)。

最佳答案

它应该像这样做一样简单:

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

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

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

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

关于使用Reduce合并R中的许多表时用文件名重命名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37168689/

相关文章:

merge 上游时 Git commit 被压缩,我如何更新我的本地 repo

sorting - 我如何使用mapreduce在hadoop集群上实现自适应mergesort

function - Clojure:使用宏或 def 的函数参数/签名

R 通过两组变量求和

r - Shiny - 使用 ggplot2(boxplot) 和 'reactive' 子集函数的有效方法

减小 glmer 模型大小

java - 程序每次都给出相同的结果,而它应该是随机的

r - pivot_longer 错误 : impossible to combine different classes?

Java ArrayList 将当前项目添加到上一个项目;删除当前项目

c# - 如何通过主键和外键(右连接)合并两个数据表?