例如有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$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的過程。