你如何将RIX中的POSIXdate转换为年?

标题是:如何将POSIXdate转换为date?

另一种方法是使用strftime()来格式化"POSIXt"对象:

 R> today <- Sys.time() R> today [1] "2012-10-19 19:12:04 BST" R> doy <- strftime(today, format = "%j") R> doy [1] "293" R> as.numeric(doy) [1] 293 

这更好地记住了在POSIX标准中,这些年中的某一天是基于零的。

正如?POSIXlt揭示的, POSIXltdate(或者甚至这样的一个向量)的$yday POSIXlt后缀将转换为年中的一天。 注意,POSIX计数1月1日为0,所以你可能要加1到结果。

我花了很长时间才find这个,所以我想我会问和回答我自己的问题 。

另外,优秀的lubridate包提供了lubridate函数,这只是上述方法的一个包装。 它方便地为其他单位( monthyearhour )定义类似的function。

 today <- Sys.time() yday(today) 

我意识到这不是什么海报正在寻找,但我需要将POSIXdate转换为时间序列分析一年中的一个小数日,并最终做到这一点:

 today <- Sys.time() doy2015f<-difftime(today,as.POSIXct(as.Date("2015-01-01 00:00", tzone="GMT")),units='days') 

我是这样做的:

 as.POSIXlt(c("15.4", "10.5", "15.5", "10.6"), format = "%d.%m")$yday # [1] 104 129 134 160