[英]Append multiple sheets from multiple Excel files in R
我正在嘗試從多個 Excel 文件中提取 append 多張紙。 例如,每個 Excel 文件有 10 張紙(不同格式),但 Excel 文件的這 10 張紙與另一個 Excel 文件的相關聯的 10 張紙具有相同的名稱和格式。 本質上,每個 Excel 文件都保存着不同國家的不同類型的信息,但每個國家收集的信息類型都是相同的(人口、污染指數、GDP 等)。 我有很多國家,所以我正在考慮使用循環。
我使用“report_1h”作為主文件 Excel,並將其他 Excel 文件的 append 頁放入主文件的工作表中。
library(rio)
x1_data <- import_list("report_1h.xlsx")
report_list <- list.files(path = 'E:/Report_folder', pattern = '*.xlsx')
sheet_ <- data.frame()
for (file in report_list){
book <- import_list(file)
for (i in 1:31){
sheet_[i] <- rbind(x1_data[[i]][,],book[[i]][,])
x1_data[[i]][,] <- sheet_[i]
}
}
該循環旨在將每個 Excel 文件中的 append 個工作表轉換為主文件“report_1h”的工作表。 但它給出了錯誤:
Error in `[<-.data.frame`(`*tmp*`, i, value = c("Data Source(s):", "Data Source(s):", :
replacement has 2 rows, data has 0
有人能告訴我為什么嗎?
這是一種方法 -
library(tidyverse)
#get the all the filenames
report_list <- list.files(path = 'E:/Report_folder', pattern = '*.xlsx$')
#Create a list of dataframes
map(report_list, function(x) {
sheets <-excel_sheets(x)
map(sheets, function(y) read_excel(x, y))
}) %>% transpose() %>%
map(bind_rows) -> result
#assign sheet names
names(result) <- paste0('Sheet', seq_along(result))
#Write master excel file
writexl::write_xlsx(result, 'master_excel.xlsx')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.