首页 > 解决方案 > 将所有 Excel 文件按表读取到 R 中,文件名作为列

问题描述

我有一个本地文件夹,其中包含相同格式的 excel 文件。每个excel文件有10张。

我希望能够做到以下几点:

1)读取R中的所有excel文件

2)将所有结果绑定在一起,但按 sheet

3)结果将是 10 个新的数据框,所有的 excel 文件都被重新绑定在一起。

4) 新列将添加文件名

我查找了代码,我能找到的最好的就是这个,但它不是按表完成的:

files = list.files()
library(plyr)
library(readr)
library(readxl)
data2=lapply(files, read_excel)
for (i in 1:length(data2)){data2[[i]]<-cbind(data2[[i]],files[i])}
all_data <- do.call("rbind.fill", data2) 

有没有人在这方面取得任何成功?

提前致谢

标签: rplyrreadrreadxl

解决方案


如果您愿意,也可以使用该tidyverse方法对其进行矢量化。

require(tidyverse)

df <- list.files(path = "your_path",
                       full.names = TRUE,
                       recursive = TRUE,
                       pattern = "*.xls") %>% 
tbl_df() %>%
mutate(sheetName = map(value, readxl::excel_sheets)) %>%
unnest(sheetName) %>% 
mutate(myFiles = purrr::map2(value, sheetName, function(x,y) {
    readxl::read_excel(x, sheet = paste(y))})) %>% 
unnest(myFiles)

*不知何故我无法标记它,所以我从这里复制我的答案


推荐阅读