r - 将所有 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)
有没有人在这方面取得任何成功?
提前致谢
解决方案
如果您愿意,也可以使用该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)
*不知何故我无法标记它,所以我从这里复制我的答案
推荐阅读
- javascript - Nuxt Auth 模块 - 将 JWT 保存在 Vuex 商店中
- nativescript-vue - 道具和模板
- grammar - ABNF 规则 `zero = ["0"] "0"` 匹配 `00` 但不匹配 `0`
- c# - 如何上传base64格式的图片?
- javascript - Queries can not be applied to a response content of type 'System.Net.Http.StreamContent'. The response content must be an ObjectContent
- java - “com.microsoft.sqlserver.jdbc.SQLServerDriver”的 ClassNotFoundException
- php - sqlite 语法错误仅在 php 中
- sql - 连接两个表并在同一语句中连接相同的列名
- python - 当太多工作人员失败时使 Dask 应用程序失败
- javascript - 使用 AJAX 请求发送到客户端 pdf 文件