我正在尝试将多个excel文件合并到R中的单个data.frame中 - 所有文件都从公共文件夹中提取,只拉动第二个工作表,它将始终具有特定名称(“值评估”)。
此外,还可以在列中保留每个文件名,以便维护合并数据的来源。
我已经能够加载文件并合并到一个data.frame中,但无法弄清楚如何将文件名保留为“源名称”。
setwd(/.)
file.list <- list.files(pattern='*.xlsx')
df.list <- lapply(file.list,read_excel)
df <- rbindlist(df.list, idcol = "id")
答案 0 :(得分:3)
使用setNames()
:
file.list <- list.files(pattern = '*.xlsx')
file.list <- setNames(file.list, file.list)
df.list <- lapply(file.list, read_excel, sheet = 2)
df.list <- Map(function(df, name) {
df$source_name <- name
df
}, df.list, names(df.list))
df <- rbindlist(df.list, idcol = "id")
(注意:可能是一个错字,你错过了sheet = 2
)。
答案 1 :(得分:0)
尝试此操作:合并所有Excel文件中的所有数据:
library(xlsx)
setwd("C:/Users/your_path_here/excel_files")
data.files = list.files(pattern = "*.xlsx")
data <- lapply(data.files, function(x) read.xlsx(x, sheetIndex = 2))
for (i in data.files) {
data <- rbind(data, read.xlsx(i, sheetIndex = 1))
}