У меня есть сетка (сетка 10 км) среднесуточные температуры с 19610101 по 19901231 в файле netcdf. Я хотел бы рассчитать статистические 30-летние значения (среднее значение и т. д.), чтобы, например, 4 января должны были иметь значения с 1 января по 7 января каждого года 1961...1990: каждая точка сетки и день должны иметь 210 значений .
Исходный размер сетки составляет 68(x) * 116 (y) * 10957 (дней), а окончательный размер сетки составляет 68 * 116 * 365.
Сценарий ниже работает, но медленно. Не могли бы вы предложить мне лучшее решение, чтобы я мог рассчитать статистические значения также для сетки 1 км.
days <- ncvar_get(nc_in,"Time")
days.px <- as.POSIXlt(days,formt="%d-%m-%")
for (year_day in 0:364) {
days_in_interest <- (year_day - 3):(year_day + 3)
days_in_interest[which(days_in_interest < 0)] <- 365 + days[which(days_in_interest < 0)]
days_in_interest[which(days_in_interest > 364)] <- days_in_interest[which(days_in_interest >364)] - 364
t_values <- grid_values[,,which((days.px$yday%in%days_in_interest )&days.px$yday!=365)]
t_mean <- apply(t_values , c(1,2), mean) # grid point mean
}