将文件夹中的多个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行读入R中的单行

将当前工作目录中的所有 CSV 文件读入具有正确文件名的 pandas

使用分块将 CSV 文件读入 Pandas 数据帧,生成单个目标数据帧

如何根据 R 中的原始文件名将包含多个数据帧的大列表保存为单个 csv

将多个 CSV 文件读入单独的数据帧

假设某个元素与 R 中的 CSV 文件的文件名相同,则将数据框中的某个元素相乘