在 R 中合并和求和多个 CSV 文件
Merge and Sum Multiple CSV files in R
首先 Question/Post,希望我没有重复这个,但搜索了尽可能多的术语。我确定这将是一个 "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
您可以将它们全部加载到一个列表中并使用 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)
首先 Question/Post,希望我没有重复这个,但搜索了尽可能多的术语。我确定这将是一个 "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
您可以将它们全部加载到一个列表中并使用 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)