6-R读取多个文件并合并为一个文件
2019-11-29 本文已影响0人
wonphen
R语言可以读取的数据格式
txt,csv,excel,spss,sas,stata,xml,hdf……
access,mysql,oracle……
- txt格式,分隔符默认为,或空格,可省略
read.table(filename,header=TRUE)
read.table(“text.txt”,header = TRUE)
write.table(dataname,"filename") - csv格式,分隔符默认为,可省略
read.csv(filename,header=TRUE)
write.csv(dataname,"filename") - excel格式
xlsx:读写excel格式数据的包
read.xlsx()
write.xlsx()
读取某文件夹下的所有Excel文件
require(openxlsx)
# dir():获取文件夹下所有文件
# pattern:匹配正则表达式
# recursive:是否查找子目录中的文件
# all.files:逻辑值。如果是FALSE,则只返回可见文件的名称
# full.names:是否包含文件绝对路径
# include.dirs:是否递归到子目录
file_names <- dir("C:/Users/Admin/Documents/R/data_set/沙9/【每周统计情况】/原数据/0603-1006/",
pattern = "*.xlsx", recursive = F, full.names = T)
读取文件
将所有文件合并为一个文件
注意:进行行合并时文件必须具有相同的列名,进行列合并时必须具有完全相同的行名
# 创建存储数据的数据框,直接将第一个文件的数据赋值给它
df <- read.xlsx(file_names[1])
# 从第二个文件开始合并
for (i in 2:length(file_names)) {
df <- rbind(df, read.xlsx(file_names[i]))}
合并数据
使用同样的方法,也可以将分布在不同文件夹下面的具有相同列的文件合并,或者仅仅是读取到工作空间,如下:
# 不能直接读取带路径的文件名了,不然给读取的文件命名也很长
file_names <- dir("C:/Users/Admin/Documents/R/data_set/沙9/【每周统计情况】/原数据/0603-1006/",
pattern = "*.xlsx", recursive = F, full.names = F)
path <- "C:/Users/Admin/Documents/R/data_set/沙9/【每周统计情况】/原数据/0603-1006/"
for (i in 2:length(file_names)) {
#去除名称后缀,获取不带后缀名称
name <- gsub(".xlsx", "", file_names[i])
assign(name, read.xlsx(paste0(path, file_names[i], sep = "")))}