基于 R 中月份的子集 NetCDF 数据

问题描述

我只想研究雨季(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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...