gpt4 book ai didi

r - 将 Excel 文件名与 dplyr::bind_rows .id 关联

转载 作者:行者123 更新时间:2023-12-04 11:54:27 25 4
gpt4 key购买 nike

我有大约 50-60 个 Excel 工作簿位于一个目录中。这些 Excel 文件大体上都是一样的。有两张工作表,一张带有说明,另一张带有所有工作表中相同的整洁数据。列/变量 A 到 J 是我实际想要提取的数据,但我愿意将其全部读入 data.frame。数据从 A 到 N 列最远。

我正在编写一个脚本来提取所有原始数据,到目前为止一切都很好。我的部分脚本使用 list.files 的标准方法来构建文件名的“df”。然后,我使用“lapply”将所有 excel 文件读入一个列表。现在问题来了。

我想使用 dplyr::bind_rows (但对其他建议持开放态度)然后将所有行绑定(bind)在一起,因为它们是相同的并且共享相同的标题。这在我的概念证明中非常有效。当我在其上使用 dplyr::bind_rows 的 .id 参数时,我得到 1 到 j 作为 id var,它对应于列表中的 data.frame 位置。

files.list <- list.files(pattern='*.xlsx') # list file names in directory
df.list <- lapply(files.list, read_excel) # read excel into a list of dfs
df <- bind_rows(df.list, .id = "id") # bind the rows of the dfs together

是否可以获得实际的文件名,而不是从读取 data.frame 的列表中的位置?如果是这样,我该怎么做?

最佳答案

尝试使用 setNames 使用文件名重命名数据框列表;来自 ?bind_rows : .id 标签取自 bind_rows() 的命名参数。当提供数据框列表时,标签取自列表的名称。如果没有找到名称,则使用数字序列代替。

files.list <- list.files(pattern='*.xlsx')
df.list <- setNames(lapply(files.list, read_excel), files.list)
df <- bind_rows(df.list, .id = "id")

关于r - 将 Excel 文件名与 dplyr::bind_rows .id 关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45783120/

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