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


 

本文首發於“生信補給站”微信公眾號,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()

#提出目錄下的所有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)  

低時間投入成本,高效率回報🤭

 

【覺得不錯,右下角點擊點個“在看”,轉發就是最好的支持和贊賞,謝謝!】

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM