(中央氣象局 http://www.cwb.gov.tw/V7/climate/dailyPrecipitation/dP.htm)。
這次的雨量資料非常詳細,不但有年份,月份,還有每日的資料,相當符合需求。但是天下沒有白吃的午餐,雨量資料的格式是沒有辦法直接與之前的資料結合並且進行分析的。雨量資料是採用類似九九乘法表、矩陣資料的形式,月份和日期各站一邊,兩者的交叉點就是當天的雨量資料。但是一般要進行統計分析,需要的資料格式是CASE和欄位。
例如第一欄式日期,第二欄是雨量,每個CASE代表了某個特定日期的雨量。手工一點,我們當然可以把整個表格抓下來,然後再EXCEL裡面複製貼上將表格貼成我們要的格式,但是我們有三個年份的資料,這樣做太瞎了,所以只好偷懶寫程式碼轉換資料。
首先我們要把資料抓下來,這次因為只有三個分頁,我就直接把表格抓下來變成CSV檔案存好,之後再用R來讀取,程式碼請見:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
##Data Source:http://www.cwb.gov.tw/V7/climate/dailyPrecipitation/dP.htm | |
#讀入檔案 | |
Kau_2011 <- as.matrix(read.csv("Kau_2011.csv",header=FALSE,fileEncoding="UTF-8-BOM")) | |
##Transform the row data(as matrix) to data frame type | |
#建立新的資料格式,只有兩欄,第一欄式日期,第二欄是雨量 | |
Kau_2011_N=matrix(nrow = 31*12, ncol = 2) | |
#建立一個計算變項,讓R知道等下要把數值填到哪一欄 | |
count <- 0 | |
#這邊使用雙重迴圈,分別代表月分和日期 | |
for (m in 1:12){ | |
for(i in 1:31){ | |
#Date | |
Kau_2011_N[i+count,1] <- paste("2011","/",m,"/",i,sep="") | |
#paste the data | |
Kau_2011_N[i+count,2] <- Kau_2011[i+1,m+1] | |
} | |
count <-count+31 | |
} |
這個做法相對單純,只要搞懂雙重迴圈的走法就可以輕鬆轉換。
圖片來源:http://www.cwb.gov.tw/V7/climate/climate_info/statistics/statistics_1_2.html
沒有留言:
張貼留言