你怎么把POSIX日期转换为R中的一年中的某一天?

时间:2011-10-31 18:56:33

标签: r datetime

标题有:如何将POSIX日期转换为日期?

5 个答案:

答案 0 :(得分:52)

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

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标准中的年份日为零。

答案 1 :(得分:22)

?POSIXlt显示时,$yday日期的POSIXlt后缀(甚至是此类的矢量)将转换为一年中的某一天。请注意,POSIX将1月1日计为第0天,因此您可能希望在结果中添加1。

我花了很长时间才找到这个,所以我想我ask and answer my own question

或者,优秀的lubridate包提供了yday函数,它只是上述方法的包装器。它方便地为其他单位定义了类似的功能(monthyearhour,...)。

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

答案 2 :(得分:3)

我意识到它并不是海报所寻找的东西,但我需要将POSIX date- 转换为一年中的小数日时间序列分析并最终做到了这一点:

today <- Sys.time()

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

答案 3 :(得分:2)

data.table软件包还提供了yday()函数。

require(data.table)
today <- Sys.time()
yday(today)

答案 4 :(得分:0)

这就是我的方式:

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