通过 Sheet 以文件名作为列将所有 Excel 个文件读入 R
Read All Excel Files into R by Sheet with file name as column
我有一个本地文件夹,其中包含 excel 个相同格式的文件。每个 excel 文件有 10 sheets。
我希望能够做到以下几点:
1) 读取R
中的所有excel个文件
2) Rbind all the results together but by sheet.
3) 结果将是 10 个新数据帧,所有 excel 文件都绑定在一起。
4) 新列将添加文件名
我已经查找了代码,我能找到的最好的代码是这个,但 sheet 没有这样做:
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)
有人成功过吗?
提前致谢
如果您愿意,也可以使用 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)
*不知何故我无法标记它,所以我从
复制我的答案
我有一个本地文件夹,其中包含 excel 个相同格式的文件。每个 excel 文件有 10 sheets。
我希望能够做到以下几点:
1) 读取R
中的所有excel个文件2) Rbind all the results together but by sheet.
3) 结果将是 10 个新数据帧,所有 excel 文件都绑定在一起。
4) 新列将添加文件名
我已经查找了代码,我能找到的最好的代码是这个,但 sheet 没有这样做:
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)
有人成功过吗?
提前致谢
如果您愿意,也可以使用 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)
*不知何故我无法标记它,所以我从