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