[英]R read_excel or readxl Multiple Files with Multiple Sheets - Bind
我有一个充满.xlsx文件的目录。 他们都有多个工作表。 我想从所有文件中提取同一张纸并将它们附加到小标题中。
我发现了许多解决方案,可以从一个Excel文件中提取多个工作表。 但是,不是来自多个文件的一张纸。
我努力了:
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”变量包含我所有带有path的文件名。 但是,我不确定如何遍历每个文件名,仅将特定的工作表=“ Portal”附加到csv文件。
错误是:
Error: path must be a string
我尝试将路径作为矢量,小标题传递,并尝试对它进行下标。 全部失败。
因此,总而言之。 我有一个xlsx文件目录,我需要从每个文件中提取一张纸并将其附加到一个csv文件中。 我尝试将purrr与某些地图功能一起使用,但也无法使其正常工作。
我的目标是使用整洁的方式。
感谢您的任何提示。
您必须使用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')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.