【问题标题】:Reading multiple csv files from a folder into a single dataframe in R [duplicate]将文件夹中的多个csv文件读入R中的单个数据框[重复]
【发布时间】: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 文件 ;)

标签: r csv import


【解决方案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
    猜你喜欢
    • 2023-01-24
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 2021-10-14
    • 2011-07-16
    相关资源
    最近更新 更多