首页 文章

打开从文件夹到具有相似名称的数据帧的文件数,以便稍后对这些数据帧执行操作

提问于
浏览
0

我一直在尝试使用相同的变量对不同的数据集执行相同的操作 . 我需要能够读取多个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之间的任何位置 . 我不知道如何命名这些数据帧 .

任何帮助,将不胜感激 . 谢谢!

3 回答

  • 1

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

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

    如果要查看 ith 数据框,可以输入 ori_data[i] 来执行此操作 .

    您还可以将列表组件命名为:

    names(ori_data) <- dir()
    

    为了解决're getting, you haven'已经为 ori_data 分配空间的错误,我会假设 . 例如,假设file.txt是由 dir() 命名的文件之一, ori_data[i] 最终可能会像 ori_data["file.txt"] . 如果您尚未将 ori_data 初始化为数据框或列表,则R将无法执行任何操作 .

  • 0

    尝试使用 assign . 这样的事情对你有用:

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

    这是我的方法,但我不能保证它运作良好 . 试一试,让我们知道 . 方法是创建一个空数据框,然后创建一个循环来吃掉目录中的所有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 的唯一文件 . 然后,您可以使用带有 dplyr 函数 group_bysplit 拆分这些文件 .

相关问题