我有一个 netCDF 文件 (.nc),其中包含 16 年(1998 - 2014)的每日降水量(5844 层)。3 个维度是时间(大小 5844)、纬度(大小 19)和经度(大小 20) R 中是否有一种简单的方法来计算每个栅格单元:
到目前为止我有:
library(ncdf4)
library(raster)
Rname <- 'F:/extracted_rain.nc'
rainfall <- nc_open(Rname)
readRainfall <- ncvar_get(rainfall, "rain") #"rain" is float name
raster_rainfall <- raster(Rname, varname = "rain") # also tried brick()
asdatadates <- as.Date(rainfall$dim$time$vals/24, origin='1998-01-01') #The time interval is per 24 hours
Run Code Online (Sandbox Code Playgroud)
我的第一个挑战是计算每个栅格单元的月平均值。我不确定如何在牢记最终目标(累积比较)的同时最好地进行。如何轻松访问特定月份中的几天?
raster(readRainfall[,,500])) # doesn't seem like a straightforward approach
Run Code Online (Sandbox Code Playgroud)
希望我清楚地表达了我的问题,如果能朝着正确的方向迈出第一步,我们将不胜感激。样本数据在这里
该问题要求在 R 中提供解决方案,但如果有人想要完成此任务并想要一个简单的替代命令行解决方案,这些统计数据就是 CDO 的面包和黄油
每月平均值:
cdo monmean in.nc monmean.nc
Run Code Online (Sandbox Code Playgroud)
年平均值:
cdo yearmean in.nc yearmean.nc
Run Code Online (Sandbox Code Playgroud)
计算所有一月、二月等的平均值:
cdo ymonmean in.nc ymonmean.nc
Run Code Online (Sandbox Code Playgroud)
相对于长期年周期的月异常:
cdo sub monmean.nc ymonmean.nc monanom.nc
Run Code Online (Sandbox Code Playgroud)
然后你想要一个特定的月份,只需选择 selmon 或 seldate 即可。
您可以使用系统命令从 R 调用这些函数。