У меня есть 3 файла NetCDF, содержащих данные о среднем дневном температурном диапазоне (dtr) в месяц между 1981 и 2010 годами. Файл охватывает период 10 лет, поэтому каждый пиксель имеет 10 x 12 значений (1 значение в месяц x 10). года). Файлы можно загрузить здесь (требуется вход в систему).
Я хотел бы объединить все эти файлы в один файл, содержащий среднемесячное значение dtr за весь период, охватываемый 3 файлы. Идея состоит в том, чтобы получить 12 значений на пиксель (1 среднемесячное значение за 30 лет).
У меня нет предыдущего опыта работы с форматом NetCDF, и я не совсем понимаю его структуру. Я попробовал функцию NetCDF
из пакета ncdump
, но я многому из нее не научился ...
К сожалению, при выполнении следующих действий вычисляется только среднее значение dtr за 30 лет.
"GIS/Clim/BioClim/dtr/" %>%
list.files(pattern = "\\.nc$", full.names = TRUE) %>%
raster::stack() %>%
raster::overlay(fun = mean)
Вот что я получаю, когда извлекаю данные из одного пикселя в один файл:
library(tidyverse)
library(sf)
p <- tibble(lat = 45.76, lon = -107.12) %>%
st_as_sf(coords = c("lon", "lat"), crs = 4326)
raster::stack("GIS/Clim/dtr/cru_dtr-2001_2010.nc") %>%
raster::extract(p, df = TRUE)
# X2001.01.16 X2001.02.15 X2001.03.16 X2001.04.16 X2001.05.16 X2001.06.16
# 1 11.1 11.3 10.8 9.900001 9.800000 9.400001
# X2001.07.16 X2001.08.16 X2001.09.16 X2001.10.16 X2001.11.16 X2001.12.16
# 1 10.100000 8.6 10.200000 9.500000 9.5 9.3
# X2002.01.16 X2002.02.15 X2002.03.16 X2002.04.16 X2002.05.16 X2002.06.16
# 1 10.6 10.7 10.3 9.0 9.600000 9.1
#
# ... ... ...
#
# X2010.07.16 X2010.08.16 X2010.09.16 X2010.10.16 X2010.11.16 X2010.12.16
# 1 9.000000 9.0 8.900001 8.800000 8.3 8.3
Как можно объединить эти 3 файла NetCDF и вычислить среднее значение по месяцам для создания нового NetCDF?
Обратите внимание, что решение Python также работает для меня.