簡體   English   中英

R:讀取多個Excel文件,提取第一個工作表名稱,然后創建新列

[英]R: reading multiple excel files, extract first sheet names, and create new column

我有多個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?

如果您碰巧只使用文件的第一張紙,那么以下內容將幫助您獲取第一張紙的名稱作為數據框的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"))

我希望這證明是有用的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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