library(raster)
library(zoo)
library(xts)
我有一个大rasterBrick
个对象(RB
)和144 layers
。每个图层在30分钟的时间步长之间与另一个图层分开。积累的开始时间是00:00:00–00:30:00 UTC
。请使用UTC
而不是CST
。
date30mins=<-seq(as.POSIXct("2015-04-01 00:00:00"), as.POSIXct("2015-04-03 23:59:59"), by="30 mins",tz="GMT") #length (date30mins)=144
即。 date30mins
"2015-04-01 00:00:00 UTC"
"2015-04-01 00:30:00 UTC"
"2015-04-01 01:00:00 UTC"
"2015-04-01 01:30:00 UTC"
"2015-04-01 02:00:00 UTC"
"2015-04-01 02:30:00 UTC"
"2015-04-01 03:00:00 UTC"
"2015-04-01 03:30:00 UTC"
"2015-04-01 04:00:00 UTC"
"2015-04-01 04:30:00 UTC"
"2015-04-01 05:00:00 UTC"
"2015-04-01 05:30:00 UTC" and so on...
成为:dates6hourly
(i.e. sum values from 00:00:00 UTC to 05:30:00 UTC;06:00:00 UTC to 11:30:00 UTC)
`dates6hourly`=seq(as.POSIXct("2015-04-01 00:00:00"), as.POSIXct("2015-04-03 23:59:59"), by="6 hours",tz="GMT")
"2015-01-01 00:00:00 UTC"
"2015-01-01 06:00:00 UTC" and so on
如何使用zApply
实现此目的?
我的数据集太大,无法通过dput
制作可重现的示例,但可以在此处找到示例数据sample data set
修改
以下内容应该完成任务但我收到错误:
index=rep(seq(1,12,by=1),each=12)
ras <- setZ(RB,date30mins)
6hrly <- zApply(ras,by=index, FUN=sum);
Error: unexpected symbol in "6hrly"
可能zApply
无法识别"index"
?
在package::rts
内,可以使用以下方式轻松完成:
rasrts=rts(x=RB,time=dates30mins)
agg <- period.apply(rasrts,index,sum)#rts
但我想使用raster
包来实现。
答案 0 :(得分:0)
我使用raster package
stackApply
函数获得了它。
库(光栅) 库(动物园) 库(XTS)
index=rep(seq(1,12,by=1),each=12)
ras <- setZ(RB,date30mins)
sixhrly <- stackApply(ras,indices=index, fun=sum);