R語言:批量循環讀取一系列excel文件

例如有20個excel文件分別代表20個亞組的數據,文件名爲亞組名P01-P20,每個文件中的變量個數和名稱等都是相同的,可通過以下命令實現一次性讀取20個excel,並生成一個新變量提示來自哪個亞組(同時展示如何讀取每個excel第二列數據的前11個字符生成一個新變量id)。


例如P01數據如下:




首先,讀取excel文件先要安裝package: XLConnect:

install.packages(XLConnect)
library(XLConnect)


其次,生成代表亞組名稱的新變量和第二列前11個字符的新變量:

temp<-list.files(pattern="*.xls")     //生成一個新變量temp代表文件路徑中所有後綴爲xls的文件的文件名

head(temp)


a=readWorksheetFromFile(temp[1],sheet=1)         //讀取temp1號excel即P01,命名爲數據庫a

a$plate=substr(as.character(temp[1]),1,3)        //生成變量plate,數值爲temp裏的plate名稱(字符1到3)

a$id=substr(a[,2],1,11)     //生成變量id, 值爲第二列數據的前11個字符


ncol(a)   //看看a有多少個變量,新生成的plate和id變量爲最後兩個,假設爲第58和59個變量

write.table(a[,c(58,59)],file = "newfile.txt",row.names=F, na="",col.names=FALSE, sep=" ",append = T,quote=F)  

//生成txt文件newfile.txt爲p01文件中的plate和id,展示如下



最後,對P02-20寫一個for循環語句,導入進去即可

for (i in 2: length(temp)){
  newfile=read.table("newfile.txt")
  b=readWorksheetFromFile(temp[i],sheet=1)
  b$row=substr(as.character(temp[i]),1,3)
  b$extract=substr(b[,2],1,11)
  write.table(b[,c(58,59)],file = "newfile.txt",row.names=F, na="",col.names=FALSE, sep=" ",append = T,quote=F)
}


//命令翻譯:對每一個i值,i從2到temp的最大值之間取值,生成一個文件newfile=之前P01的txt文件,下面四行是重複上面生成P01file的過程。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章