问题描述
我只想研究雨季(6 月至 9 月)的感知。我找到了子集数据帧 here 的解决方案。但是,NetCDF 数据略有不同,日期属于索引号,而不是数据框中的行/列之一。在这种情况下,如何对 NetCDF 数据进行子集化?
ncin <- nc_open(ncfname)
print(ncin) # The NetCDF data has following dimension
3 dimensions:
lon Size:119
lat Size:173
datetime Size:13514
units: days since 1983-01-01
variable:
float precip[lon,lat,datetime] (Chunking: [119,173,1])
datetime
的形式不是真实的日期。 t <- ncvar_get(ncin,"datetime")
将打印 1 到 13514 而不是 1/1/1983 到 12/31/2019。
因此,我必须转换时间变量。
tustr <- strsplit(tunits$value," ")
tdstr <- strsplit(unlist(tustr)[3],"-")
tmonth <- as.integer(unlist(tdstr)[2])
tday <- as.integer(unlist(tdstr)[3])
tyear <- as.integer(unlist(tdstr)[1])
chron(time,origin=c(tmonth,tday,tyear)) # print: 01/01/83...12/31/19
然后,通过使用 filter
,如果数据只是一个数据框,我可以对数据进行子集化。
library(dplyr) # loads %>%
library(lubridate)
dft %>% filter(month(Year) %in% c(6,7,8,9))
我的问题是:对于 NetCDF 类型的数据。 datetime
只是时间维度的索引。 例如,precip[1,1,1]
给了我 1983 年 1 月 1 日 (Lon,lat)=(1,1) 的感知数据。没有实际保存日期信息的行或列。如何根据月份对 NetCDF 数据进行子集化?谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)