将文件夹中的多个csv文件读入R中的单个数据框[重复]
Posted
技术标签:
【中文标题】将文件夹中的多个csv文件读入R中的单个数据框[重复]【英文标题】:Reading multiple csv files from a folder into a single dataframe in R [duplicate] 【发布时间】:2014-09-09 06:18:36 【问题描述】:我有一个包含 332 个 csv 文件的文件夹。文件名如下 001.csv、002.csv、003.csv、............、330.csv、331.csv、332.csv。所有文件都有相同数量的变量和相同的格式。
我需要读取一个数据帧中的所有文件。我一直在阅读每一个然后使用rbind,但这太麻烦了。
需要帮助。
【问题讨论】:
虽然副本会给你一个很好的想法,但这个确切的问题之前已经在其他问题like this one中发布过。 我也是,我的 Coursera 作业中有 332 个 csv 文件 ;) 【参考方案1】:试试 lapply 和 do.call
file_names <- dir() #where you have your files
your_data_frame <- do.call(rbind,lapply(file_names,read.csv))
【讨论】:
【参考方案2】:data.table
的解决方案,答案取自 SO 中的另一篇文章,我有时会使用它。
library(data.table)
files <- list.files(path = "/etc/dump",pattern = ".csv")
temp <- lapply(files, fread, sep=",")
data <- rbindlist( temp )
【讨论】:
如何在单独的列中捕获文件名以及数据框中的文件名以识别数据源? @Arun 我认为您可能需要在答案中的.csv
之前添加 2x 反斜杠。【参考方案3】:
这是一个可能的解决方案。也可以使用 apply 函数来完成。
path <- "path_to_files"
files <- c(paste("00",2:9,".csv",sep=""),
paste("0",10:99,".csv",sep=""),
paste(100:332,".csv",sep="")
)
#Read first file to create variables in a data frame
data <- read.csv(paste(path,"001.csv",sep="/"))
#Read remaining files and rbind them to dataset
for (f in files)
data <- rbind(data,read.csv(paste(path, files, sep="/")))
【讨论】:
感谢大家的即时帮助。以下带有 header=TRUE 的命令对我有用。 file_names以上是关于将文件夹中的多个csv文件读入R中的单个数据框[重复]的主要内容,如果未能解决你的问题,请参考以下文章
将当前工作目录中的所有 CSV 文件读入具有正确文件名的 pandas
使用分块将 CSV 文件读入 Pandas 数据帧,生成单个目标数据帧