[R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。
解决的问题:需要读取某个大文件夹下所有子文件夹中的excel文件,并汇总,汇总文件中需要包含的2部分的信息:1.该条数据来源于哪个子文件夹;2.该条数据来源于哪个excel文件。最终,按照子文件夹单独保存汇总文件,或者只保存成一个汇总文件。
场景描述:抓取了各个APP的使用数据,分散地保存在各个文件夹中。文件格式如下:
- 第一级分类:文件夹名
第二级分类:文件夹下xlsx文件名
第三级分类:每个xlsx文件中每行(具体的每条数据),但其中并没有该APP属于的二级分类和一级分类,需要为每条数据添加二级分类和一级分类,并最终汇总到一个文件中。
解决方法一:
#作用:读取每个文件夹下的excel,并将其合并成一个文件。 #共有3级:第一级:文件夹名,第二级:文件夹中的xlsx文件名,第三级:xlsx文件中的每行#代码后面注释中若有:【修改】字样,则表示如果要在你机器上运行该段代码时,需要进行相应的修改。##########方法一:最终单独保存在每个文件夹下 rm(list=ls()) setwd("E:/cnblogs") #设定工作目录【修改】library(xlsx)first_category_name = list.files("APP整理") #list.files命令得到"APP整理”文件夹下所有文件夹的名称【修改】 dir = paste("./APP整理/",first_category_name,sep="") #用paste命令构建路径变量dir,第一级目录的详细路径【修改】 n = length(dir) #读取dir长度,也就是:总共有多少个一级目录 n_sub<-rep(0,n) n_sub<-as.data.frame(n_sub) n_sub<-t(n_sub) head(n_sub) #n_sub是每个一级目录(文件夹)下有多少个文件,也就是:有多少个二级目录,初始化为0,用于后面的操作########## for(i in 1:n){ #对于每个一级目录(文件夹)b=list.files(dir[i]) #b是列出每个一级目录(文件夹)中每个xlsx文件的名称n_sub[i]=length(b) #得到一级目录(文件夹)下xlsx的文件个数:n_submerge_1<-read.xlsx("E:/cnblogs/APP整理/xlsx文件样例.xlsx",sheetIndex=1,encoding='UTF-8')#dim(merge_1)names(merge_1)<-c('序号','APP','2016-01-11','2016-01-12','2016-01-13','2016-01-14','2016-01-15','2016-01-16','2016-01-17')#我的文件列名,根据你具体情况修改【修改】merge_1$second_category<-'second_category'merge_1$first_category<-'first_category'merge_1<-merge_1[1,-1] #这一段的目的是读取一个xlsx文件样例,得到一个初始的dataframe(不含数据),免除了后面重新建立datafram的麻烦,用于后面文件的rbind拼接for(j in 1:n_sub[i]){ #对于每个一级目录(文件夹)下的每个xlsx文件new_1<-read.xlsx(file=paste(dir[i],'/',b[j],sep=''),sheetIndex=1,encoding='UTF-8') #读取xlsx文件names(new_1)<-c('序号','APP','2016-01-11','2016-01-12','2016-01-13','2016-01-14','2016-01-15','2016-01-16','2016-01-17')【修改】new_1<-new_1[-1,-1] #因为实际数据需要,删除第一行和第一列(根据实际读取xlsx文件的情况进行修改)new_1$second_category<-substr(b[j],1,4) #二级目录的名称是xlsx的文件名。new_1$first_category<-first_category_name[i] #一级目录的名称是“文件夹名”merge_1<-rbind(merge_1,new_1)}write.xlsx(merge_1,paste(dir[i],'/merge.xlsx',sep=''),row.names = F,col.names= F)#单独保存在每个文件夹下 }
解决方法二:
##########方法二:最终得到一个汇总的xlsx文件,在每个文件夹下并没有保存单独的合并文件
rm(list=ls()) setwd("E:cnblogs") #设定工作目录【修改】library(xlsx)first_category_name = list.files("APP整理") #list.files命令得到"APP整理"文件夹下所有文件夹的名称 dir = paste("./APP整理/",first_category_name,sep="") #用paste命令构建路径变量dir,第一级目录的详细路径 n = length(dir) #读取dir长度,也就是:总共有多少个一级目录 n_sub<-rep(0,n) n_sub<-as.data.frame(n_sub) n_sub<-t(n_sub) head(n_sub) #n_sub是每个一级目录(文件夹)下有多少个文件,也就是:有多少个二级目录,初始化为0,用于后面的操作merge_1<-read.xlsx("E:/cnblogs/APP整理/xlsx文件样例.xlsx",sheetIndex=1,encoding='UTF-8') dim(merge_1) names(merge_1)<-c('序号','APP','2016-01-11','2016-01-12','2016-01-13','2016-01-14','2016-01-15','2016-01-16','2016-01-17')#我的文件的列名【修改】 merge_1$second_category<-'second_category' merge_1$first_category<-'first_category' merge_1<-merge_1[1,-1] #这一段的目的是读取一个xlsx文件样例,得到一个初始的dataframe(不含数据),免除了后面重新建立一个dataframe的麻烦,用于后面文件的rbind拼接for(i in 1:n){ #对于每个一级目录(文件夹)b=list.files(dir[i]) #b是列出每个一级目录(文件夹)中每个xlsx文件的名称n_sub[i]=length(b) #得到一级目录(文件夹)下xlsx的文件个数:n_subfor(j in 1:n_sub[i]){ #对于每个一级目录(文件夹)下的每个xlsx文件new_1<-read.xlsx(file=paste(dir[i],'/',b[j],sep=''),sheetIndex=1,encoding='UTF-8') #读取xlsx文件names(new_1)<-c('序号','APP','2016-01-11','2016-01-12','2016-01-13','2016-01-14','2016-01-15','2016-01-16','2016-01-17')#我的文件的文件名【修改】new_1<-new_1[-1,-1] #因为实际数据需要,删除第一行和第一列(根据实际读取xlsx文件的情况进行修改)new_1$second_category<-substr(b[j],1,4) #二级目录的名称是xlsx的文件名。new_1$first_category<-first_category_name[i] #一级目录的名称是“文件夹名”merge_1<-rbind(merge_1,new_1)}# write.xlsx(merge_1,paste(dir[i],'/merge.xlsx',sep=''),row.names = F,col.names= F) } write.xlsx(merge_1,paste("./APP整理",'/merge.xlsx',sep=''),row.names = F,col.names= F)#得到一个汇总文件,并没有在每个文件夹下保存单独的汇总文件
转载于:https://www.cnblogs.com/lzllovesyl/p/5170032.html
[R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。相关推荐
- abaqus python 读取文件_通过Python脚本从Abaqus中的excel文件导入幅度数据
我在从excel文件导入幅度数据时在Abaqus中创建了以下宏.然后尝试运行此脚本以从同一个excel文件创建另一个幅度但不幸的是,我有以下错误.在这方面有人可以帮助我吗? 脚本: # Do not ...
- r读取文件夹下的所有csv文件_[R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。...
解决的问题:需要读取某个大文件夹下所有子文件夹中的excel文件,并汇总,汇总文件中需要包含的2部分的信息:1.该条数据来源于哪个子文件夹:2.该条数据来源于哪个excel文件.最终,按照子文件夹单独 ...
- c语言 遍历文件夹中所有文件名,C# 遍历文件夹下所有子文件夹中的文件,得到文件名...
假设a文件夹在F盘下,代码如下.将文件名输出到一个ListBox中 using System.Data; using System.Drawing; using System.Linq; using ...
- r语言读取excel数据_R语言 | 更快的表格文件读取方法!
友情提示:蓝色下划线字体为引文,请保持警惕! 使用R语言读取 Affymetrix Human Exon 1.0 ST Array 芯片平台探针注释文件: https://www.affymetrix ...
- R语言 读取csv文件 有关无法打开表格以及表格位置不对问题【已解决】
因为概率模型课程,刚开始用到R语言,遇到些问题,现已解决 问题1: R语言读取并导入csv文件时打不出表格 解决: 首先用getwd()获取R当前所在的工作目录,将csv文件与R的code文件放在同 ...
- R语言读取csv文件,第一列列名出现乱码怎么办
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接: https://blog.csdn.net/weixin_45075290/art ...
- R语言读取excel文件实战(read.xlsx函数、read_excel函数、read.xlsx函数、Write函数)
R语言读取excel文件实战(read.xlsx函数.read_excel函数.read.xlsx函数.Write函数) 目录 R语言读取excel文件实战(read.xlsx函数.read_exce ...
- R语言读取xlsx文件
R语言读取csv文件 关于R语言读取Excel文件,比较麻烦,我从来都反对直接读取xlsx文件,因为爬虫数据时,一般保存的格式都是csv文件,或者直接保存到数据库里面,没有谁会保存到Excel文件里面 ...
- R语言读取csv文件,第一列列名出现乱码的解决方法
在利用R语言读取csv文件时,第一列列名总是出现乱码,代码如下: setwd("E:\2.Model\4. Simulation") #设定文件路径 All.Soils = rea ...
- R语言小白学习笔记3—R语言读取数据
R语言小白学习笔记3-R语言读取数据 笔记链接 想说的话 学习笔记3-R语言读取数据 3.1 读取CSV文件 3.1.1 read_delim函数 3.1.2 fread函数 3.2 读取Excel数 ...
最新文章
- 锁定计算机好在下游戏吗,巧用win7锁定计算机 防止孩子沉迷游戏
- 通过HTTP协议实现多线程下载
- 软件工程—团队作业1
- 服务器安装三节点RabbitMQ集群(4)
- Python+turtle交互式绘图:可以用鼠标拖动的小海龟
- 使用Spark Shell开发运行Spark程序
- 虽然保持了连续代码生产量但是仔细想想也没什么必要
- xshell和xftp免费版官方(家庭、学校版)下载
- 布线工程-认识光纤和光缆
- VC++ 查看系统进程,获取进程关联的DLL列表
- UNI-APP实现扫描二维码
- 拼装机器人感想_机器人实验心得体会
- 一个全网最详细 Python 教程,不信你来学一学!
- JS,两种在页面加载完成后自动执行的方法(ready,onload)
- 论文笔记(二):基于卷积神经网络的高分辨率遥感图像上的水体识别技术
- 较为简洁明了的KMP算法解释
- 简练网软考知识点整理-项目整体绩效测量基准
- 【SQL开发实战技巧】系列(十六):数据仓库中时间类型操作(初级)日、月、年、时、分、秒之差及时间间隔计算
- 单元测试之mock使用
- windows自带便笺使用
热门文章
- 今天有人问,为何汝粉丝这么少?
- C中使用汇编交换两个值
- 解决办法:一切都正确,Python3执行PyImport_Import()一直返回NULL
- 博客V7之后,喜庆排名进入2000之内
- 管理感悟:图省事就是把别人当白痴
- 所有自然数相加的和是-1/12,你信吗?
- 肥城市c语言入门自学零基础,2019年自考C语言程序设计模拟试题十三答案.doc
- python自定义损失函数_自定义损失函数sklearn
- 关于预编译和宏定义部分说明
- 【315天】每日项目总结系列053(2017.12.17)