手把手教你批量讀取數據文件

曾經有網友問我如何讀取磁碟中數個文件的數據,並把這些數據合併到一張數據表中。這期就跟大家講講如何完成如下四種情況的文件批量讀取:

1、對於文件名有規律的情況

解決方案:

# 設置R的工作空間setwd(D:\data file\data1)#res <- NULL# 初始化數據框,用於後面的數據合併data1 <- data.frame()#通過循環完成數據合併for (i in 1:4){# 構造數據路徑 path <- paste0(getwd(),\,test,i,.xlsx) #res <- c(res,path)# 讀取併合並數據 data1 <- rbind(data1,read_excel(path = path))}

2、對於文件名沒有規律的情況

解決方案:

# 設置工作空間

setwd(D:\data file\data2)

# 讀取該工作空間下的所有文件名

filenames <- dir()

# 初始化數據框,用於後面的數據合併

data2 <- data.frame()

#通過循環完成數據合併

for (i in filenames){

# 構造數據路徑

path <- paste0(getwd(),\,i)

#res <- c(res,path)

# 讀取併合並數據

data2 <- rbind(data2,read_excel(path = path))

}

3、對於文件名沒有規律的情況,並且只讀取某做後綴的文件

解決方案:

# 設置工作空間

setwd(D:\data file\data3)

# 讀取該工作空間下的所有文件名

filenames <- dir()

# 通過正則,獲取所有xlsx結尾的文件名

filenames2 <- grep(\.xlsx, filenames, value = TRUE)

# 初始化數據框,用於後面的數據合併

data3 <- data.frame()

#通過循環完成數據合併

for (i in filenames2){

# 構造數據路徑

path <- paste0(getwd(),\,i)

#res <- c(res,path)

# 讀取併合並數據

data3 <- rbind(data3,read_excel(path = path))

}

4、文件內容結構不一致,但變數名稱一致

解決方案

# 載入第三方擴展包,用於編寫SQL語句library(sqldf)# 設置工作空間setwd(D:\data file\data4)# 讀取該工作空間下的所有文件名filenames <- dir()# 通過正則,獲取所有xlsx結尾的文件名filenames2 <- grep(\.xlsx, filenames, value = TRUE)# 初始化數據框,用於後面的數據合併data4 <- data.frame()#通過循環完成數據合併for (i in filenames2){# 構造數據路徑 path <- paste0(getwd(),\,i) #res <- c(res,path)# 使用read_excel函數讀取xlsx文件 data <- read_excel(path = path)# 使用sqldf函數編寫SQL語句,並把結果合併起來 data4 <- rbind(data4, sqldf("select id,name,gender,age from data"))}

以上四種情況是日常工作中最為常見的,這裡通過R語言完成了這幾種批量讀取數據的落地,希望可以幫助到需要的朋友。

下期預告:SVM理論與實戰

----------------------------------------------

作者:劉順祥

出處:劉順祥博客

公眾號:每天進步一點點2015

大家也可以加小編微信:tswenqu(備註:知乎),進R語言中文社區 交流群,可以跟各位老師互相交流。玩R的夥伴都在裡面的,一起進來多交流

官方公眾號:R語言中文社區 (ID:R_shequ) 歡迎關注,持續連載。


推薦閱讀:

從豆瓣數據中看國漫
機器學習之樸素貝葉斯:基於概論論的分類方法(四)
想要做好社團招新?——會利用數據就好啦
超簡單的熱力地圖教程來襲,各位小主快翻牌啊~
泰坦尼克號倖存預測

TAG:R编程语言 | MicrosoftExcel | 数据分析 |