我是lubridate
的新手。我尝试用lubridate
计算两组时间之间的时差,但对于间隔,持续时间和周期却得到了些许不同的答案
library(lubridate)
a <- dmy_hms("9/7/1988 4:30:00")
b <- dmy_hms("2/11/2019 4:30:00")
c <- a %--% b
per <- as.period(c)
dur <- as.duration(c)
time_length(c, unit = "year") #31.31694
time_length(per, unit = "year") #31.33716
time_length(dur, unit = "year") #31.33699
答案 0 :(得分:0)
如as.duration
可以通过?as.duration
获得的文档中所述,as.duration
将返回精确时间测量,而as.period
将提供相对测量。它继续指出:
因此,持续时间和期间之间不存在一对一的映射。与期间对象一起使用时,as.duration会提供对期间长度的不精确估算;
因此,使用time_length
将为as.period
和as.duration
带来不同的结果。
time_length
的文档中对此进行了进一步的扩展,间隔不等于持续时间。
要获得%--%
和as.period
的相同结果,请首先将周期转换为以下时间间隔:
res <- a %--% b
dur <- as.duration(res)
per <- as.period(res)
time_length(as.interval(per,a), "year")
[1] 31.31694
time_length(res,"year")
[1] 31.31694