使用 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)
假设我有两个 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)