「R语言 数据合并」批量读取数据文件合并为一个excel表格
需求分析:
在一个文件夹下里面有很多excel文件,它们字段都一样,这时候需要把他们合并为一个excel表格。
类型1:R语言合并同一个文件夹下的多个csv文件
rm(list = ls())
options(scipen = 200)
#########自定义函数################
readCSV <- function(dir_dta){
file_list <- list.files(path=dir_dta,full.names=T)
varSave_func <- function(x){
table_x <- read.csv(file=x,sep=",",header = T)
}
a<-invisible(lapply(file_list,FUN=varSave_func))
b<-as.data.frame(a[[1]])
for (i in 2:length(a)){
c<-rbind(b,a[[i]])
b <- c
}
return(b)
}
##########调用函数
dir_dta <- "C:/Users/Administrator/Desktop/data"
result <-readCSV(dir_dta)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
类型2:R语言合并同一个文件夹下的多个.xlsx文件
2.1、对于文件名没有规律的情况
# 设置工作空间
setwd('D:\data file\data2')
# 读取该工作空间下的所有文件名
filenames <- dir()
# 初始化数据框,用于后面的数据合并
data2 <- data.frame()
#通过循环完成数据合并
for (i in filenames){
# 构造数据路径
path <- paste0(getwd(),'\',i)
#res <- c(res,path)
# 读取并合并数据
data2 <- rbind(data2,read_excel(path = path))
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
2.2、对于文件名没有规律的情况,并且只读取某后缀的文件
(xls,csv,xlsx 后缀都存在,只读取xlsx)
# 设置工作空间
setwd('D:\data file\data3')
# 读取该工作空间下的所有文件名
filenames <- dir()
# 通过正则,获取所有xlsx结尾的文件名
filenames2 <- grep('\.xlsx', filenames, value = TRUE)
# 初始化数据框,用于后面的数据合并
data3 <- data.frame()
#通过循环完成数据合并
for (i in filenames2){
# 构造数据路径
path <- paste0(getwd(),'\',i)
#res <- c(res,path)
# 读取并合并数据
data3 <- rbind(data3,read_excel(path = path))
}