R:读取多个excel文件,提取第一个工作表名称,并创建新列

时间:2017-02-08 14:11:34

标签: r excel xlsx

我有多个excel文件,它们有唯一的工作表名称(在我的案例中创建文件的日期)。我批量阅读它们,需要将表格名称分配给新列“id”中的每个文件。我知道如何制作数字ID,或id =文件名,但无法找到将工作表名称作为id的方法。

library(readxl)
library(data.table)

file.list <- list.files("C:/Users/.../Studies/",pattern='*.xlsx')
df.list <- lapply(file.list, read_excel)

#id = numeric
df <- rbindlist(df.list, idcol = "id")

#Or by file name:
attr(df.list, "names") <- file.list
df2 = rbindlist(df.list,idcol="id")

#How to get sheet names?

1 个答案:

答案 0 :(得分:3)

如果您恰好只处理文件的第一张,那么以下内容可以帮助您将第一张图片的名称作为数据框的id

attr(df.list, "names") <- sapply(file.list, function(x) excel_sheets(x)[1])

但是,如果您正在考虑从所有可用工作表中导入数据,则需要做更多工作,从创建数据框列表的方式开始:

df.list <- lapply(file.list,function(x) {
  sheets <- excel_sheets(x)
  dfs <- lapply(sheets, function(y) {
    read_excel(x, sheet = y)
  })
  names(dfs) <- sheets
  dfs
})

这应创建一个列表列表,其中应包含文件中的所有可用数据。主列表中的列表在工作表名称后适当命名。因此,您之后不需要更改任何属性。但是要将数据帧绑定在一起,您需要执行以下操作:

rbindlist(lapply(df.list, rbindlist, id = "id"))

我希望这证明有用。