如何以特定单位获取 lubridate
中表示时间间隔的时长?我能想到的只有以下这段代码:
> ival
[1] 2011-01-01 03:00:46 -- 2011-10-21 18:33:44
> difftime(attr(ival, "start") + as.numeric(ival), attr(ival, "start"), 'days')
Time difference of 293.6479 days
我还在https://github.com/hadley/lubridate/issues/105中提出了此功能请求,以假设没有更好的方法可用。但也许这里有人知道更好的方法。另外,最新消息是,difftime
函数也无法处理这种情况。以下是一个示例。> (d1 <- as.POSIXct("2011-03-12 12:00:00", 'America/Chicago'))
[1] "2011-03-12 12:00:00 CST"
> (d2 <- d1 + days(1)) # Gives desired result
[1] "2011-03-13 12:00:00 CDT"
> (i2 <- d2 - d1)
[1] 2011-03-12 12:00:00 -- 2011-03-13 12:00:00
> difftime(attr(i2, "start") + as.numeric(i2), attr(i2, "start"), 'days')
Time difference of 23 hours
正如我下面所提到的,我认为处理这个问题的一种好方法是实现一个/.interval
函数,它不会先将其输入转换为period
。