你如何将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
揭示的, POSIXlt
date(或者甚至这样的一个向量)的$yday
POSIXlt
后缀将转换为年中的一天。 注意,POSIX计数1月1日为0,所以你可能要加1到结果。
我花了很长时间才find这个,所以我想我会问和回答我自己的问题 。
另外,优秀的lubridate
包提供了lubridate
函数,这只是上述方法的一个包装。 它方便地为其他单位( month
, year
, hour
)定义类似的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