用r中的光栅包聚合季节平均值
我试图将每日数据(35年)汇总到每月,然后使用R中的光栅包计算季节平均值(我知道如何使用CDO)。下面是我的代码,它输出所有年份的4个季节平均值(140层)。如何循环以仅输出4层(针对4个季节)?。我感谢你的帮助用r中的光栅包聚合季节平均值,r,netcdf,r-raster,rgdal,netcdf4,R,Netcdf,R Raster,Rgdal,Netcdf4,我试图将每日数据(35年)汇总到每月,然后使用R中的光栅包计算季节平均值(我知道如何使用CDO)。下面是我的代码,它输出所有年份的4个季节平均值(140层)。如何循环以仅输出4层(针对4个季节)?。我感谢你的帮助 dailydata <- brick ("dailyrain.nc") dates <- seq(as.Date("1981-01-01"), as.Date("2015-12-31"), by="day") months <- format(dates, "
dailydata <- brick ("dailyrain.nc")
dates <- seq(as.Date("1981-01-01"), as.Date("2015-12-31"), by="day")
months <- format(dates, "%Y-%m")
Aggregate2Monthly <- function(x) {
agg <- aggregate(x, by=list(months), sum)
return(agg$x)
}
mothlydata <- calc(dailydata, Aggregate2Monthly)
mondates <- seq(as.Date("1981-01-01"), as.Date("2015-12-31"), by="month")
years <- format(mondates, "%Y")
seasons.def=c(1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4)
years.seasons <- paste(years, seasons.def, sep="-")
nyears <- years[!duplicated(years)]
nseas <- seasons.def[!duplicated(seasons.def)]
Aggregate2Seasons <- function(x) {
agg <- aggregate(x, by=list(years.seasons), mean)
return(agg$x)
}
seasonsdata <- calc(mothlydata, Aggregate2Seasons)
dailydata您希望按年和月的组合进行聚合
months <- format(dates, "%Y-%m")
它是有效的,你有没有建议从那里计算JF、MAM、JJAS和OND的季节平均值?但这将给出季节的日平均值,而不是季节的月平均值?或者我遗漏了一点?我已经编辑了代码,我从月数据开始汇总季节平均值,但是我只能输出140个层。我如何总结4个层呢?如果使用组(日期)
,您不需要第一步:您可以直接将日期映射到JF
等等。可能重复
groups <- function(x) {
d <- as.POSIXlt(x)
ans <- character(length(x))
ans[d$mon %in% 0:1] <- "JF"
ans[d$mon %in% 2:4] <- "MAM"
ans[d$mon %in% 5:8] <- "JJAS"
ans[d$mon %in% 9:11] <- "OND"
ans
}
data.frame(dates, groups(dates))
## dates groups.dates.
## 1 1981-01-01 JF
## 2 1981-01-02 JF
## 3 1981-01-03 JF
## 4 1981-01-04 JF
## 5 1981-01-05 JF
## 6 1981-01-06 JF