R read_excel 或 readxl 多个文件与多个工作表 - 绑定
R read_excel or readxl Multiple Files with Multiple Sheets - Bind
我有一个充满 .xlsx 文件的目录。他们都有多个 sheet。我想从所有文件中提取相同的 sheet 并将它们附加到小标题中。
我找到了许多从单个 Excel 文件中提取多个 sheet 的解决方案;但是,多个文件中没有一个 sheet。
我试过:
paths = as.tibble(list.files("data/BAH", pattern = ".xlsx", full.names = TRUE, all.files = FALSE))
test <- paths %>% read_xlsx(sheet = "Portal", col_names = TRUE)
我知道 "paths" 变量包含我所有的文件名和路径。但是,我不确定如何遍历每个文件名,仅将特定的 sheet = "Portal" 附加到 csv 文件。
错误是:
Error: path must be a string
我曾尝试将路径作为矢量、小标题传递,并且也尝试了 sub-scripting。全部失败。
所以,总结一下。我有一个 xlsx 文件目录,我需要从每个文件中提取一个 sheet 并将其附加到 csv 文件。我曾尝试将 purrr 与某些地图功能一起使用,但也无法使其正常工作。
我的目标是使用 Tidy 方式。
感谢任何提示。
您必须使用 lapply()
或 map()
。尝试
test <- lapply(paths, read_xlsx, sheet = "Portal", col_names = TRUE)
或
library(purrr)
test <- map_dfr(paths, read_xlsx, sheet = "Portal", col_names = TRUE)
然后您可以使用
绑定数据帧
library(dplyr)
test %>% bind_rows()
library(tidyverse)
library(readxl)
library(fs)
# Get all files
xlsx_files <- fs::dir_ls("data/BAH", regexp = "\.xlsx$")
paths = as_tibble(list.files("data/BAH", pattern = ".xlsx", full.names = TRUE, all.files = FALSE))
#portal_tabs <- map_dfr(paths, read_xlsx, sheet = "Portal", col_names = TRUE)
portal_tabs <- map_dfr(xlsx_files, read_xlsx, sheet = "Portal", col_names = TRUE, .id = 'source')
我有一个充满 .xlsx 文件的目录。他们都有多个 sheet。我想从所有文件中提取相同的 sheet 并将它们附加到小标题中。
我找到了许多从单个 Excel 文件中提取多个 sheet 的解决方案;但是,多个文件中没有一个 sheet。
我试过:
paths = as.tibble(list.files("data/BAH", pattern = ".xlsx", full.names = TRUE, all.files = FALSE))
test <- paths %>% read_xlsx(sheet = "Portal", col_names = TRUE)
我知道 "paths" 变量包含我所有的文件名和路径。但是,我不确定如何遍历每个文件名,仅将特定的 sheet = "Portal" 附加到 csv 文件。
错误是:
Error: path must be a string
我曾尝试将路径作为矢量、小标题传递,并且也尝试了 sub-scripting。全部失败。
所以,总结一下。我有一个 xlsx 文件目录,我需要从每个文件中提取一个 sheet 并将其附加到 csv 文件。我曾尝试将 purrr 与某些地图功能一起使用,但也无法使其正常工作。
我的目标是使用 Tidy 方式。
感谢任何提示。
您必须使用 lapply()
或 map()
。尝试
test <- lapply(paths, read_xlsx, sheet = "Portal", col_names = TRUE)
或
library(purrr)
test <- map_dfr(paths, read_xlsx, sheet = "Portal", col_names = TRUE)
然后您可以使用
绑定数据帧library(dplyr)
test %>% bind_rows()
library(tidyverse)
library(readxl)
library(fs)
# Get all files
xlsx_files <- fs::dir_ls("data/BAH", regexp = "\.xlsx$")
paths = as_tibble(list.files("data/BAH", pattern = ".xlsx", full.names = TRUE, all.files = FALSE))
#portal_tabs <- map_dfr(paths, read_xlsx, sheet = "Portal", col_names = TRUE)
portal_tabs <- map_dfr(xlsx_files, read_xlsx, sheet = "Portal", col_names = TRUE, .id = 'source')