【发布时间】:2017-05-05 20:33:47
【问题描述】:
我有一个 netCDF 文件 (.nc),其中包含 16 年(1998 - 2014)的每日降水量(5844 层)。 3个维度是时间(大小5844),纬度(大小19)和经度(大小20) R 中是否有一种直接的方法来计算每个光栅单元:
- 月平均和年平均
- 累积比较(例如 1 月至 3 月与所有 1 月至 3 月的平均值相比)
到目前为止我有:
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
我的第一个挑战是计算每个栅格单元的月平均值。我不确定在牢记最终目标(累积比较)的同时如何最好地进行。我怎样才能轻松地访问某个月份的几天?
raster(readRainfall[,,500])) # doesn't seem like a straightforward approach
希望我把我的问题说清楚了,我们将不胜感激第一次朝着正确的方向前进。 样本数据 here
【问题讨论】:
-
我发现示例nc文件的尺寸与您在问题中提到的不同。您能否上传更好的样本数据(与您在问题中提到的维度完全相同)?
-
你说得对,我认为只需几天时间,尺寸就会保持不变。由于原始文件不大,我提供了新的示例数据!谢谢@raymkchow
-
我建议将您的数据转换为
xts类,并使用函数apply.monthly和apply.yearly进行计算。但是@joberlin 的方法可能更好,因为它使用了 rasterstack。