![](/img/trans.png)
[英]Importing multiple Excel files with multiple sheets and creating a new column based on sheet's names
[英]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.