问题描述
我想将一些xlsx文件导入rstudio。 这些文件都在同一个文件夹中,但是其中还有一些我不感兴趣的其他xlsx文件:
- Alles_2017.xlsx
- Alles_2018.xlsx
- Alles_2019.xlsx
- Alles_2020_incl_Oct.xlsx
- Blabla.xlsx
- IdontkNow.xlsx
我想导入所有四个“ Alles _....”文件,以建立包含所有这些数据的单个数据框(例如,称为“全部”)。而且我希望该函数忽略所有不以“ Alles_”开头的其他文件
我可以使用哪些功能?
提前谢谢!
解决方法
list.files
将创建一个文件名向量,pattern参数就像一个过滤器,在此过滤器将仅匹配其中包含Alles的文件。 map_dfr
是执行for循环并将表绑定在一起的一种理想方法。如果所有alles文件表的结构都不相同,则可能需要先尝试map
本身。这将返回一个列表,以便您可以检查它们。 read_xlsx
将按照您的想法进行。您可能需要弄清楚所需文件中的哪张纸,默认值为工作簿中的第一张纸。
library(purrr)
library(magrittr)
library(readxl)
list.files(path = "directory they live",pattern = "Alles_",full.names = TRUE) %>%
map_dfr(.,read_xlsx)
,
首先,我将使用setwd()
设置工作目录,然后:
dir()[grepl('Alles',ignore.case = T,dir())] -> files
do.call('rbind',lapply(files,function(file) openxlsx::read.xlsx(file)))
如果要第二张纸:
do.call('rbind',function(file) openxlsx::read.xlsx(file,sheet = 2)))