[问题类型]:
程式咨询(我想用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")))
[环境叙述]:
[关键字]:
时间处理 循环