gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 02:32:25 26 4
gpt4 key购买 nike

我有多个 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
})

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

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

我希望这有用。

关于R:读取多个Excel文件,提取第一个工作表名称,并创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42115412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com