使用 purrr 和 readxl 从多个 excel 文件中读取一个工作表并添加字段

Read one worksheet from multiple excel files using purrr and readxl and add field

假设我有两个 excel 文件,名为 packs.xlsx,每个文件包含多个 sheet。我想从每个文件中仅使用 1 sheet 迭代地创建一个数据框,每个文件都命名为“摘要”。我怎样才能使用 Purrr 和 readxl 来解决这个问题,同时还添加一个包含文件名的字段?

当我使用以下代码将 sheet 保存为 CSV 时,我成功了:

filenames <- list.files(pattern="packs*.*csv")
dat <- map_dfr(filenames, read_xlsx, sheet = "summary") %>% glimpse()

我将如何添加一个字段来显示给定行来自哪个文件?感谢您提供任何见解!

假设两个 packs.xlsx 文件位于不同的子文件夹中:

library(readxl)

filenames <- list.files(pattern = "packs.xlsx", recursive = TRUE)
df <- lapply(filenames, function(fn) {
  # get the sheet detail 
  xl <- read_excel(fn, sheet = "summary")    
  
  # add the filename as a field
  xl$filename <- fn            

  # function return                     
  xl
})

# if both summary sheets have the same format, you can combine them into one 
fin <- do.call(rbind, df)