前言

最近看到嘉義的黑蚵松獎金有點誘人,感覺這資料可能是奪冠的元素之一,於是又不務正業了。

載入套件

library(rvest)
options(stringsAsFactors = F)

擷取Etag 5/29日的資料起迄站資料

url <- "http://tisvcloud.freeway.gov.tw/history/TDCS/M08A/20170529/"
dat <- read_html(url)
dat <- html_table(dat)
urls <- paste0(url, dat[[1]]$Name[-1])

dat <- lapply(urls, function(x){
  html_table(read_html(x))[[1]][-1,]
})

files <- c()
for(i in seq_along(dat)){
  files <- c(files, paste0(urls[i], dat[[i]]$Name))
}

df <- lapply(files, read.csv, header=F) %>% do.call("rbind", .)

從TDCS使用手冊整理出代碼對照的偵測站名稱

下載連結

tmp <- pdftools::pdf_text("~/Downloads/TDCS使用手冊(tanfb)v3.0-1.pdf")
library(stringr)
id <- str_extract_all(tmp, "0[0-9][0-9A-Z]{5,5}[A-Z]")[-(1:9)] %>% unlist()
inter <- str_extract_all(tmp, "\\(.*")[-(1:9)] %>% unlist()
inter <- data.frame(id, inter)
rownames(inter) <- inter$id

df$V2 <- inter[df$V2, "inter"]
df$V3 <- inter[df$V3, "inter"]
colnames(df) <- c("報表產製時間","起點","迄點","車種")

看看苗栗這天的進出量

length(grep("苗栗",df$起點))
## [1] 11157
length(grep("苗栗",df$迄點))
## [1] 10867

看看車種分佈

# 31(小客車) 、32(小貨車) 、41(大客車) 、42(大貨車) 、5(聯結車)
table(df$車種)
## 
##      5     31     32     41     42 
##  46522 805566 370184  29405  66755

鎖定苗栗的車種分佈

table(df$車種[grep("苗栗",df$起點)])
## 
##    5   31   32   41   42 
##  181 7402 3068  135  371
table(df$車種[grep("苗栗",df$迄點)])
## 
##    5   31   32   41   42 
##  180 7224 2908  153  402

鎖定墾丁的車種分佈

table(df$車種[grep("南州",df$起點)])
## 
##     5    31    32    41    42 
##   285 12253  5322   495   529
table(df$車種[grep("南州",df$迄點)])
## 
##    5   31   32   41   42 
##  300 7806 3612  263  470

結論

因為是不務正業而我又三分鐘熱度,所以還是開個頭就好,有興趣的多玩看看,eTag的資料感覺很多寶可以挖。剛剛本來想把這資料做地圖視覺化,不過找不到偵測站對應的經緯度,自己用Google API又有部分找不到。