繁体   English   中英

R read_excel或readxl具有多个工作表的多个文件-绑定

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM