微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决基于 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 举报,一经查实,本站将立刻删除。