如何将多个CSV文件中的目标列读入1个文件,并将输入文件名称的列重命名为R?

时间:2014-06-29 21:51:41

标签: r csv merge

我有多个具有不同名称的CSV文件,但所有格式都与相同顺序的列和行完全相同,并且具有相同的标签。我希望能够从每个文件中读取特定列,并通过将文件名添加到1个文件R中来重命名这些列。

例如,我想保留季节,范围和工作日(所有文件都相同)以及每个文件中的提取Var3和Var7列。

File1: Season reach weekday Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8
File2: Season reach weekday Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8
File3: Season reach weekday Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8

将合并为:

MergedFile: Season reach weekday File1Var3 File1Var7 File2Var3 File2Var7 File3Var3 File3Var7

这可能吗?

1 个答案:

答案 0 :(得分:0)

在分配名称和按数据过滤时将它们读入列表,其代码如下:

names <- c("File1", "File2", "File3")
d <- lapply(names, function(name) {
         df <- read.table(name, header=TRUE)

         # Remove unneeded columns
         df <- df[c('Season', 'reach', 'Var3', 'Var7')]

         # Rename columns
         varcols <- grepl('Var', names(df))
         names(df)[varcols] <- paste0(name, names(df)[varcols])
     })

现在已经重命名了列数据列,您可以将它们合并在一起:

Reduce(merge, d)

这将匹配每个数据框中未重命名的列。