将多个excel文件合并到R中仅获取第二张,将文件名保留为“数据源”

时间:2017-03-17 23:22:05

标签: r excel

我正在尝试将多个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")

2 个答案:

答案 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))
}