从 R 中的多个 Excel 文件追加多张工作表
Append multiple sheets from multiple Excel files in R
我正在尝试从多个 Excel 文件中附加多个工作表。例如,每个 Excel 文件有 10 张(不同格式),但一个 Excel 文件的 10 张与另一个 Excel 文件的相关 10 张具有相同的名称和格式。本质上,每个 Excel 文件包含不同国家的不同类型的信息,但每个国家收集的信息类型都是相同的(人口、污染指数、GDP 等)。我有很多国家,所以我正在考虑使用循环。
我使用“report_1h”作为主 Excel 文件,并将其他 Excel 文件的工作表附加到主文件的工作表中。
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 文件中的工作表附加到主文件“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')
我正在尝试从多个 Excel 文件中附加多个工作表。例如,每个 Excel 文件有 10 张(不同格式),但一个 Excel 文件的 10 张与另一个 Excel 文件的相关 10 张具有相同的名称和格式。本质上,每个 Excel 文件包含不同国家的不同类型的信息,但每个国家收集的信息类型都是相同的(人口、污染指数、GDP 等)。我有很多国家,所以我正在考虑使用循环。
我使用“report_1h”作为主 Excel 文件,并将其他 Excel 文件的工作表附加到主文件的工作表中。
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 文件中的工作表附加到主文件“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')