一開始學R語言的時候總會想說,R語言到底比Eexcel好用在哪裡?其中一個就是R語言可以一口氣讀取多個excel檔案!這樣就不用打開每個excel慢慢操作啦。
使用的是"政府開放資料,車站每日各站點進出站人數",從2005年到2018六月每一天的進站人數,我想試著做做看 時間序列模型分析 的東西。。
一百多萬筆數據是一個excel放不下的,因此會先介紹 讀取多個檔案 跟篇幾偏會寫 R實現excel功能 ,。
**資料來源:https://data.gov.tw/dataset/8792 **
我們一口氣讀取多個資料的方法就是 把某個檔案夾的資料全部吃進來 ,並且順便教可以指定有特定字元的excel我們才讀取,如果你只是要所有的excel檔,也可以將 特定字元 寫成 ".csv"便可以達成目標。
#----------------------------------------------------------------------------------#
我剛剛下載了兩個檔案,因此我要從"下載(Downloads)"這個地方找出最新下載的資料,並且要是.csv
library(data.table)#讀取csv檔
#可以主動抓取你的電腦名稱,這樣寫可以讓R_code變得很通用
yourname= paste(Sys.getenv("USERNAME"))
#告訴電腦路徑
path = paste("C:\\Users\\",yourname,"\\Downloads\\",sep="")
#包含"每日各站進出站人數"字樣的數據
xls=list.files(path,pattern ="每日各站進出站人數")
通用版的寫法所以圈for迴圈,這樣有幾個檔案都通用
for(i in 1:length(xls))
{
if(i==1)
data=read.csv(paste(path,xls[i],sep=""))
else
data=rbind(a,read.csv(paste(path,xls[i],sep=""))
}
備註:
給定要的檔案數量(data_length = 2),並且根據下載的時間來尋找,也是很實用的方法。
data_length = 2
hold_c_time=rep(0,length(xls))
for(i in 1:length(xls))
hold_c_time[i]=file.info(paste(path,xls[i],sep=""))[,"mtime"]
dataname=xls[order(hold_c_time,decreasing = T)[1:data_length]]
for(i in 1:length(dataname))
{
if(i==1)
a=read_excel(paste(path,dataname[i],sep=""))
else
a=rbind(a,read_excel(paste(path,dataname[i],sep=""))
}