【问题标题】:How to compile multiple csv files into a single xlsx file using R?如何使用 R 将多个 csv 文件编译成一个 xlsx 文件?
【发布时间】:2021-05-20 03:27:14
【问题描述】:

假设我在一个名为 Path 的目录中有许多 csv 文件:

abc.csv
def.csv
xyz.csv

如何将这些文件编译成单个 xlsx 文件,其中每个 csv 都成为自己的选项卡?我试过使用下面的函数,但不幸的是只有第一个 csv 最终出现在 xlsx 中:

path <- "Path"
filenames_list <- list.files(path = path, full.names = TRUE)

for (i in 1:length(filenames_list)) {

  sheet_name <- strsplit(strsplit(filenames_list[i], "/")[[1]][4], "\\.")[[1]][1]
  file_name <- paste0('Path/output.xlsx')
  temp <- read.csv(filenames_list[i])
  write.xlsx(temp, file = file_name, sheetName = sheet_name, row.names = F, append = T)

}

有什么建议吗?

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以通过sapply 尝试这种方法-

    path <- "Path"
    filenames_list <- list.files(path = path, full.names = TRUE)
    
    list_files <- sapply(filenames_list, read.csv, simplify = FALSE)
    names(list_files) <- tools::file_path_sans_ext(basename(names(list_files)))
    
    writexl::write_xlsx(list_files, 'data.xlsx')
    

    【讨论】:

      【解决方案2】:

      这是一个可能的tidyverse 解决方案:

      library(openxlsx)
      library(tidyverse)
      
      # Make sure your working directory is set to the location where your .csv files are
      
      list.files(pattern = "*.csv") %>% 
        map(., ~read_csv(.)) %>% 
        write.xlsx(., "My Multi-tabbed File.xlsx")
      

      【讨论】:

      • 这很棒。有没有一种简单的方法可以在每个选项卡的 csv 文件名之后为其命名?
      猜你喜欢
      • 2021-08-09
      • 2019-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 2013-11-10
      • 2017-12-24
      相关资源
      最近更新 更多