【问题标题】:Open number of files from folder into dataframes with similar names to later perform operations on these dataframes将文件夹中的文件数量打开到具有相似名称的数据帧中,以便稍后对这些数据帧执行操作
【发布时间】:2015-06-09 18:45:11
【问题描述】:

我一直在尝试对具有相同变量的不同数据集执行相同的操作。我需要能够读取多个 csv 文件并将它们放入具有相似名称的数据框中(例如:data1、data2 等),以便我可以对它们执行相同的任务。目前我正在重写这组代码 5 次,但是如果有一种方法可以命名和循环它们的名称并执行这些任务,那就太好了。问题是每次执行代码时文件总数不会保持不变。

这是我到目前为止所尝试过的,这可能会让我知道我需要做什么。

filenames <- dir(path="C/.../Files")
for(i in filenames){
  ori_data[i] <- read.table(i, header = T, sep = ",", stringsAsFactors=F)
}

当然这会引发错误,因为 R 无法识别 ori_data[i]。 我的文件夹“文件”仅包含需要分析的 csv 文件。文件的数量可以在 1 到 20 之间。我只是不知道如何命名这些数据帧。

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • read.table(filenames[i], header = T, sep = ",", stringsAsFactors=F)怎么样

标签: r csv


【解决方案1】:

您可以将文件读入列表。将您的工作目录设置为包含感兴趣文件的文件夹,然后执行以下操作:

ori_data <- lapply(dir(), read.csv, header = T, sep = ",", stringsAsFactors = F)

如果您想查看ith 数据框,则可以输入ori_data[i]

您也可以这样命名列表组件:

names(ori_data) <- dir()

为了解决您遇到的错误,我假设您尚未为 ori_data 分配空间。例如,假设 file.txt 是 dir() 命名的文件之一,ori_data[i] 最终可能类似于 ori_data["file.txt"]。如果您尚未将 ori_data 初始化为数据框或列表,那么 R 将无法执行任何操作。

【讨论】:

    【解决方案2】:

    尝试使用assign。像这样的东西应该适合你:

        filenames <- dir(path="C/.../Files")
    for(i in filenames){
      assign(paste0('ori_data_',i),read.table(i, header = T, sep = ",",stringsAsFactors=F))
    }
    

    【讨论】:

      【解决方案3】:

      这是我的方法,但我不能保证效果很好。试一试,让我们知道。方法是创建一个空数据框,然后创建一个循环来吃掉目录中的所有 cvs,并将名称存储在一个文件中(使用选项full.names = TRUE)。

      data <- data.frame()
      filesf <- list.files("your_directory", full.names=TRUE)
      for (i in filesf) {
           data <- rbind(data, read.csv(filesf[i]))
      }
      

      之后,您应该有一个名为 data 的唯一文件。然后,您可以使用splitdplyr 函数group_by 拆分该文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-21
        • 2022-11-25
        • 2019-10-14
        • 1970-01-01
        • 1970-01-01
        • 2019-04-06
        • 2016-11-18
        • 1970-01-01
        相关资源
        最近更新 更多