iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 14
0
AI & Data

機器學習_資料採礦_透過數據協助決策_R語言系列 第 14

[Day 14] 政府開放資料_每日各站點進出站人數_R語言讀取多個檔案

  • 分享至 

  • xImage
  •  

一開始學R語言的時候總會想說,R語言到底比Eexcel好用在哪裡?其中一個就是R語言可以一口氣讀取多個excel檔案!這樣就不用打開每個excel慢慢操作啦。

使用的是"政府開放資料,車站每日各站點進出站人數",從2005年到2018六月每一天的進站人數,我想試著做做看 時間序列模型分析 的東西。/images/emoticon/emoticon20.gif

政府開放資料,車站每日各站點進出站人數 有一百多萬筆數據,包含239個車站以及四千多天的數據,如下:

https://ithelp.ithome.com.tw/upload/images/20181026/20111603WL8hmWlQQq.png

一百多萬筆數據是一個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=""))
  
}

上一篇
[Day 13] 政府開放資料_計程車營運狀況調查_回歸(數值與類別變數補充)
下一篇
[Day 15] 政府開放資料_每日各站點進出站人數_R語言實現excel功能
系列文
機器學習_資料採礦_透過數據協助決策_R語言30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
sam989798
iT邦新手 4 級 ‧ 2018-10-26 22:52:04

好實用!

yanchen iT邦新手 2 級 ‧ 2018-10-26 22:52:50 檢舉

/images/emoticon/emoticon12.gif

sam989798 iT邦新手 4 級 ‧ 2018-10-26 22:56:12 檢舉

點關注不迷路

我要留言

立即登入留言