1

第一个问题/帖子,希望我没有重复这一点,但已经搜索了我能想到的尽可能多的术语。我敢肯定这将是一个“doh”时刻,但这里有:

使用 R 我试图读取几个 100 个 .csv 文件,每个文件有两列,类型和经过的时间,例如:

Col1    Col2
Type A  11:20:15
Type B  29:40:34
Type C  45:13:26

我正在尝试合并文件夹中的每个文件以生成一个包含所有时间总和的 DF,但我正在画一个空白,非常感谢任何有关正确功能或解决方案的指导

这是我所在的位置:

    files = list.files(pattern="*.csv")
    fileno <- length(files)

    for (i in 1:fileno){
    assign(files[i], read.csv(files[i]))
    ###Code to Read each "time" and Sum with current
    # TotalDF <- Time Value from Current loaded CSV "Summed" to TotalDF
    }

如果我有两个文件:

Col1    Col2
Type A  11:20:15
Type B  29:40:34
Type C  45:13:26

Col1    Col2
Type A  5:00:00
Type B  3:00:00
Type C  8:00:00

那么TotalDF将是:

Col1    Col2
Type A  16:20:15
Type B  32:40:34
Type C  53:13:26
4

1 回答 1

2

您可以将它们全部加载到列表中并使用 Reduce。

# define a vector with the file paths
nameFolder <- "data"
vectorFiles <- list.files(nameFolder, full.names = TRUE)

# load each file and change the name of the second column
listDf <- lapply(vectorFiles, function(fileName){
  dfFile <- read.csv(fileName)
  names(dfFile)[2] <- fileName
  return(dfFile)
})

# merge the data frames on the column Col1
dfMerged <- Reduce(function(...) merge(..., by = "Col1"), listDf)
于 2015-01-20T11:05:42.793 回答