lubridate hour 不处理时间
lubridate hour doesn't handle chron times
我正在尝试从 R 中的 chron
时间中提取小时数。lubridate::hour
的帮助说明如下:
Date-time must be a POSIXct, POSIXlt, Date, Period, chron, yearmon, yearqtr, zoo, zooreg, timeDate, xts, its, ti, jul, timeSeries, and fts objects.
但是好像不行:
library(chron)
library(lubridate)
hour(chron(times. = "01:02:03"))
报错
Error in as.POSIXlt.default(x, tz = tz(x)) :
do not know how to convert 'x' to class “POSIXlt”
这是一个错误吗?
我知道可以改用 chron::hours
,这在大多数情况下更可取。但是 lubridate 的部分吸引力在于拥有一组函数来处理各种日期时间数据,并且必须在任何地方将 hour
更改为 hours
与此背道而驰。
问题是tt
下面:
library(chron)
tt <- chron(times. = "01:02:03")
class(tt)
## [1] "times"
实际上不是 class "chron"
。它属于 class "times"
。
1) 它也需要一个日期部分才能成为 class "chron"
所以这会起作用:
library(lubridate)
hour(chron(0, tt))
## [1] 1
2) 或:
hour(as.chron(tt)) # as.chron always produces a chron object
## [1] 1
3) 不使用 lubridate 的替代方案如下,基于 chron 将一天表示为 1,因此 1 小时为 1/24:
trunc(24 * as.numeric(tt))
## [1] 1
我正在尝试从 R 中的 chron
时间中提取小时数。lubridate::hour
的帮助说明如下:
Date-time must be a POSIXct, POSIXlt, Date, Period, chron, yearmon, yearqtr, zoo, zooreg, timeDate, xts, its, ti, jul, timeSeries, and fts objects.
但是好像不行:
library(chron)
library(lubridate)
hour(chron(times. = "01:02:03"))
报错
Error in as.POSIXlt.default(x, tz = tz(x)) :
do not know how to convert 'x' to class “POSIXlt”
这是一个错误吗?
我知道可以改用 chron::hours
,这在大多数情况下更可取。但是 lubridate 的部分吸引力在于拥有一组函数来处理各种日期时间数据,并且必须在任何地方将 hour
更改为 hours
与此背道而驰。
问题是tt
下面:
library(chron)
tt <- chron(times. = "01:02:03")
class(tt)
## [1] "times"
实际上不是 class "chron"
。它属于 class "times"
。
1) 它也需要一个日期部分才能成为 class "chron"
所以这会起作用:
library(lubridate)
hour(chron(0, tt))
## [1] 1
2) 或:
hour(as.chron(tt)) # as.chron always produces a chron object
## [1] 1
3) 不使用 lubridate 的替代方案如下,基于 chron 将一天表示为 1,因此 1 小时为 1/24:
trunc(24 * as.numeric(tt))
## [1] 1