[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]:
這筆資料為2010年全球的降雨資料,資料可從這裡取得:http://0rz.tw/JI056,資料的時
間格式為24小時一筆,總共365筆,現在我想先把時間的格式轉成年月日(如:2010-01-01)
,再判斷日期的月份來做計算(迴圈),之前有大大解答我是用apply的做法,我也知道在
R裡用apply會比用迴圈來的有效率,不過我想用自己理解的邏輯來寫迴圈做練習,而下面
我所寫的迴圈我知道其中一個問題是time1的維度還是365(雖然數字變成1~12),我不知道
該怎麼把time1(按月份分好的365天)放到一個12格的矩陣裡,所以想請教各位大大下面的
迴圈該如何修改才正確呢??謝謝。
[程式範例]:
rm(list=ls())
library(ncdf4)
library(data.table)
TRMM_data <- "C:\\Users\\TOM\\Desktop\\R(資料庫)\\TRMM資料\\trmm_2010.nc"
obs <- nc_open(TRMM_data)
print(obs)
lon <- ncvar_get(obs,"lon")
lat <- ncvar_get(obs,"lat")
time <- ncvar_get(obs,"time")
precip <- ncvar_get(obs,"r")
nc_close(obs)
for(tmonth in c(1:12)){
for(time1 in c(1:365)){
time <- as.Date(time / 24, format = "%Y-%m-%d", origin = "2010-01-01")
time1 <- strftime(time,format="%Y-%m-%d)
tmonth <- month(time1)
if(tmonth==time1){
precip1 <- precip[,,tmonth]
precip2 <- array(NA_real_,dim=c(1440,400,12))
for(i in c(1:1440)){
for(j in c(1:400)){
precip2[i,j,1:12] <- mean(precip1[i,j,tmonth])
}
}
}
}
}
library(sp)
library(RColorBrewer)
image(lon,lat,precip2[,,1],col=rev(brewer.pal(10,"RdBu")))
[環境敘述]:
[關鍵字]:
時間處理 迴圈