簡體   English   中英

Append 來自 R 中多個 Excel 文件的多張紙

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM