首页 > 解决方案 > 如何从 R 中的日期时间获取一年中的小时?

问题描述

我很惊讶这个lubridate包没有这个功能。我正在寻找的是这样的东西yday(x),它给出了一年中的某一天,但我希望yhour(x)它会返回, 1for等等,一直到非闰年的 8760 。2020-01-01 01:00:0022020-01-01 02:00:00

有任何想法吗?

标签: rlubridate

解决方案


您可以编写自己的函数来计算它:

library(lubridate)
yhour <- function(time) {
  (yday(time) - 1) * 24 + hour(time)
}
yhour(as.POSIXct('2020-01-01 08:00:00'))
#[1] 8

可以用基数 R 写成:

yhour <- function(time) {
  (as.integer(format(time, '%j')) - 1) * 24 + as.integer(format(time, '%H'))
}

这里的逻辑是获取一年中的哪一天,从中减去 1 天乘以 24,然后加上今天的小时。


推荐阅读