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

Gre*_*gor 43 datetime r

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

Rei*_*son 56

另一种方法是"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
Run Code Online (Sandbox Code Playgroud)

最好记住POSIX标准中的年份日为零.

  • @B.Davis 你可以做类似`as.numeric(Sys.Date()-as.Date('2015-03-01',format='%Y-%m-%d'))` (2认同)

Gre*_*gor 22

如图所示?POSIXlt,日期的$yday后缀POSIXlt(甚至是这样的矢量)将转换为一年中的某一天.请注意,POSIX将1月1日计为第0天,因此您可能希望将1添加到结果中.

我花了很长时间才找到这个,所以我想我会回答我自己的问题.

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

today <- Sys.time()
yday(today)
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这只适用于类""POSIXlt"`的对象.另一个主要类是"POSIXct",它以非常不同的方式存储在内部.例如,在`Sys.time()`的输出上尝试你的方法.`strftime()`方法适用于这两种类型. (3认同)