将Excel文件名与dplyr::bind_rows.id关联
我有大约50-60本Excel工作簿放在一个目录中。这些Excel文件大体上是一样的。有两个工作表,一个有说明,另一个在所有工作表中都有相同的整洁数据。列/变量A到J是我实际上想要提取的数据,但我愿意将其全部读入data.frame。数据输出到A到N列 我正在编写一个脚本来提取所有的原始数据,目前为止效果良好。我的部分脚本使用list.files的标准方法来构建文件名的“df”。然后,我使用“lappy”将所有excel文件读取到一个列表中。现在麻烦来了 我想使用dplyr::bind_行(但我接受其他建议)将所有行绑定在一起,因为它们是相同的,并且共享相同的标题。这在我的概念证明中非常有效。当我在上面使用dplyr::bind_行的.id参数时,我得到1到j作为id变量,它对应于列表中的data.frame位置将Excel文件名与dplyr::bind_rows.id关联,r,list,dplyr,R,List,Dplyr,我有大约50-60本Excel工作簿放在一个目录中。这些Excel文件大体上是一样的。有两个工作表,一个有说明,另一个在所有工作表中都有相同的整洁数据。列/变量A到J是我实际上想要提取的数据,但我愿意将其全部读入data.frame。数据输出到A到N列 我正在编写一个脚本来提取所有的原始数据,目前为止效果良好。我的部分脚本使用list.files的标准方法来构建文件名的“df”。然后,我使用“lappy”将所有excel文件读取到一个列表中。现在麻烦来了 我想使用dplyr::bind_行(但我
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
files.list尝试使用setNames
用文件名重命名数据帧列表;从?bind_rows
:.id标签取自bind_rows()的命名参数。提供数据帧列表时,标签取自列表的名称。如果找不到名称,则使用数字序列
files.list请共享一些代码。你问的不是很清楚。你是如何得到那些目录位置,而不是文件名的?我没有投反对票。我会先留言,然后再投票。赢家鸡肉晚餐!这项工作做得很出色。它帮助我将文件名与它来自的数据关联起来。非常有助于保留审计跟踪。哇,谢谢你这篇有用的帖子。。。如果您也有兴趣跳过几行,比如在我的例子中,在每个文件的开头,您可以在read_excel之后添加“skip=7”,如df.list
files.list <- list.files(pattern='*.xlsx')
df.list <- setNames(lapply(files.list, read_excel), files.list)
df <- bind_rows(df.list, .id = "id")