r-如何在将数字对象转换为指定原点的日期对象时设置日历(365天)



我正在处理NetCDF文件,并尝试将numeric转换为Date对象。

我正在使用lubricate包中的as_data函数。该功能运行良好。然而,转换后的日期从2039-12-24开始,应该是2040-01-01。

我想问题可能出在日历上。我检查了NetCDF属性,它使用了365天的日历年。可能是其他问题导致了这个问题。有什么想法吗?

time <- as_date(time, origin = as.Date('2006-1-1')) # manipualte time

数值矢量在下方

> time[1:200]
[1] 12410.5 12411.5 12412.5 12413.5 12414.5 12415.5 12416.5 12417.5 12418.5 12419.5 12420.5 12421.5 12422.5 12423.5
[15] 12424.5 12425.5 12426.5 12427.5 12428.5 12429.5 12430.5 12431.5 12432.5 12433.5 12434.5 12435.5 12436.5 12437.5
[29] 12438.5 12439.5 12440.5 12441.5 12442.5 12443.5 12444.5 12445.5 12446.5 12447.5 12448.5 12449.5 12450.5 12451.5
[43] 12452.5 12453.5 12454.5 12455.5 12456.5 12457.5 12458.5 12459.5 12460.5 12461.5 12462.5 12463.5 12464.5 12465.5
[57] 12466.5 12467.5 12468.5 12469.5 12470.5 12471.5 12472.5 12473.5 12474.5 12475.5 12476.5 12477.5 12478.5 12479.5
[71] 12480.5 12481.5 12482.5 12483.5 12484.5 12485.5 12486.5 12487.5 12488.5 12489.5 12490.5 12491.5 12492.5 12493.5
[85] 12494.5 12495.5 12496.5 12497.5 12498.5 12499.5 12500.5 12501.5 12502.5 12503.5 12504.5 12505.5 12506.5 12507.5
[99] 12508.5 12509.5 12510.5 12511.5 12512.5 12513.5 12514.5 12515.5 12516.5 12517.5 12518.5 12519.5 12520.5 12521.5
[113] 12522.5 12523.5 12524.5 12525.5 12526.5 12527.5 12528.5 12529.5 12530.5 12531.5 12532.5 12533.5 12534.5 12535.5
[127] 12536.5 12537.5 12538.5 12539.5 12540.5 12541.5 12542.5 12543.5 12544.5 12545.5 12546.5 12547.5 12548.5 12549.5
[141] 12550.5 12551.5 12552.5 12553.5 12554.5 12555.5 12556.5 12557.5 12558.5 12559.5 12560.5 12561.5 12562.5 12563.5
[155] 12564.5 12565.5 12566.5 12567.5 12568.5 12569.5 12570.5 12571.5 12572.5 12573.5 12574.5 12575.5 12576.5 12577.5
[169] 12578.5 12579.5 12580.5 12581.5 12582.5 12583.5 12584.5 12585.5 12586.5 12587.5 12588.5 12589.5 12590.5 12591.5
[183] 12592.5 12593.5 12594.5 12595.5 12596.5 12597.5 12598.5 12599.5 12600.5 12601.5 12602.5 12603.5 12604.5 12605.5
[197] 12606.5 12607.5 12608.5 12609.5

迟到总比不到好:(。我对不同类型的日历也有类似的问题,但在我发现ncdf4.helpers包后,现在一切都变得更容易、更快了。一个例子:

library(ncdf4)
#open the netcdf file 
ncin<- nc_open("nc_file.nc")
library(ncdf4.helpers)
#obtain time dimension in date format
Time_in_Date_format <- nc.get.time.series(f = ncin,
time.dim.name = "time")
nc_close(ncin)

最新更新