【问题标题】:How can I read a target colum from multiple CSV files into 1 file and renaming the column with the input file name into R? [duplicate]如何将多个 CSV 文件中的目标列读入 1 个文件,并将输入文件名的列重命名为 R? [复制]
【发布时间】:2014-08-20 06:18:34
【问题描述】:

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

例如,我想保留 Season、reach 和 weekday(所有文件都相同)以及从每个文件中提取 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

这可能吗?

【问题讨论】:

  • 这取决于很多事情。请包含一个可重现的示例以及您尝试过的一些代码。

标签: r csv merge


【解决方案1】:

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

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)

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

【讨论】:

    猜你喜欢
    • 2021-12-03
    • 2014-07-20
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 2019-02-13
    • 1970-01-01
    相关资源
    最近更新 更多