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



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

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

我想使用 dplyr::bind_rows(但对其他建议持开放态度(然后将所有行绑定在一起,因为它们是相同的并且共享相同的标题。这在我的概念验证中效果很好。当我在上面使用 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")

最新更新