我必须将NetCDF
文件中的数字日期转换为date
中的r
对象。请参阅下面的属性。
time Size:341880
grads_dim: t
grads_mapping: linear
grads_size: 341880
grads_min: 01z01jan1980
grads_step: 60mn
units: days since 1-1-1 00:00:0.0
long_name: time
minimum: 01z01jan1980
maximum: 00z01jan2019
resolution: 0.0416666679084301
我用于转换的代码如下。如属性表中所示,所得的date
对象并非从1980年1月1日开始。dput
可再现性也在下面提供。这里有什么想法吗?
time_rt <- convertDateNcdf2R(time, units = "days", origin = as.POSIXct("1-1-1 00:00:0.0",tz = "UTC"),
time.format = c("%Y-%m-%d", "%Y-%m-%d %H:%M:%S",
"%Y-%m-%d %H:%M", "%Y-%m-%d %Z %H:%M", "%Y-%m-%d %Z %H:%M:%S"))
> head(time_rt)
[1] "1980-01-13 01:00:00 UTC" "1980-01-13 02:00:00 UTC" "1980-01-13 03:00:00 UTC" "1980-01-13 04:00:00 UTC" "1980-01-13 05:00:00 UTC" "1980-01-13 06:00:00 UTC"
> dput(time[1:20])
structure(c(722816.041666667, 722816.083333333, 722816.125, 722816.166666667,
722816.208333333, 722816.25, 722816.291666667, 722816.333333333,
722816.375, 722816.416666667, 722816.458333333, 722816.5, 722816.541666667,
722816.583333333, 722816.625, 722816.666666667, 722816.708333333,
722816.75, 722816.791666667, 722816.833333333), .Dim = 20L)
我终于通过使用软件包RNetCDF
解决了这个问题。尝试下面的代码。
utcal.nc('days since 1-1-1 00:00:0.0', time_raw, type = 's')