美文网首页科研信息学R数据-R语言-图表-决策-Linux-Python
R|批量循环处理同一格式文件-csv,txt,excel

R|批量循环处理同一格式文件-csv,txt,excel

作者: 生信补给站 | 来源:发表于2019-09-19 10:08 被阅读0次

    本文首发于“生信补给站”微信公众号,https://mp.weixin.qq.com/s/8IfMrSr9xc8_1Y2_9Ne6hg

    在一个文件夹下有很多字段一致,格式统一的数据文件(csv,txt,excel),可以使用R快速的统一成一个文件方便后续分析和处理。

    数据准备

    ​ 将需要处理的字段一致,格式统一的数据文件(csv,txt,excel),放到文件夹内,并将此文件夹设置为工作目录,下面分情况介绍如何批量读取并合并数据。

    1)文件夹内只有一种格式的文件:csv,txt,excel;

    2)文件夹内有多种格式的文件:csv,txt,excel以及其他的png,pdf等文件;

    数据处理

    1 仅有一种类型文件,此处以csv示例

    设定工作目录,将需要处理的数据文件放到工作目录下

    #查看当前路径下所有文件

    a = list.files()     
    a 
    
    img
    #命令构建路径变量dir(方便更改),也可以不构建,后面示例                                        
    dir = paste("./",a,sep="")                 
    #读取dir长度,也就是文件夹下的文件个数
    n = length(dir)                                       
    #读入第一个文件内容
    merge.data = read.csv(file = dir[1],header=T,sep=",")   
    
    #循环从第二个文件开始读入所有文件,并组合到merge.data变量中
    for (i in 2:n){
       new.data = read.csv(file = dir[i], header=T, sep=",")
       merge.data = rbind(merge.data,new.data)
    }
    
    #输出组合后的文件merge.csv到input文件
    write.csv(merge.data,file = "./merge_all.csv",row.names=FALSE)  
    

    2 存在多种类型文件,仅读取csv格式文件

    当工作目录下多种类型文件时,只读取其中一种

    list.files()
    
    img
    #提出目录下的所有csv文件循环导入然后合并
    a = list.files(pattern = ".csv")                                     
    #不构建路径变量,直接读入第一个文件内容
    merge.data = read.csv(a[1],header=T,sep=",")   
    
    #循环从第二个文件开始读入所有文件,并组合到merge.data变量中
    for (i in 2:n){
       new.data = read.csv(a[i], header=T, sep=",")
       merge.data = rbind(merge.data,new.data)
    }
    #输出组合后的文件merge.csv到input文件
    write.csv(merge.data,file = "./merge_only_csv.csv",row.names=FALSE)  
    

    注:因txt文件亦可以直接用R基本读入方式读取,更改read.table即可,此处不举例。

    3 存在多种类型文件,仅读取excel格式文件

    因R不能直接读取excel文件,需要加载R包,个人习惯利用readxl包读取。

    #install.packages("readxl")
    library(readxl)
    #另一种方式提出目录下的所有excel文件
    list <- list.files()
    a <- grep('\\.xlsx', list, value = TRUE)
    
    n = length(a)
    merge.data = read_excel(a[1])   
    #循环从第二个文件开始读入所有文件,并组合到merge.data变量中
    for (i in 2:n){
       new.data = read_excel(a[i])
       merge.data = rbind(merge.data,new.data)
    }
    #输出组合后的文件merge.csv到input文件
    write.csv(merge.data,file = "./merge_only_excel.csv",row.names=FALSE)  
    

    低时间投入成本,高效率回报🤭

    【觉得不错,右下角点击点个“在看”,转发就是最好的支持和赞赏,谢谢!】

    img

    相关文章

      网友评论

        本文标题:R|批量循环处理同一格式文件-csv,txt,excel

        本文链接:https://www.haomeiwen.com/subject/qyoluctx.html