在R中合并和汇总多个CSV文件

时间:2015-01-20 10:22:47

标签: r merge rbind cbind

第一个问题/帖子,希望我没有重复这个,但已经搜索了我能想到的多个术语。我相信这将是一个“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

1 个答案:

答案 0 :(得分: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)