间隔,持续时间和周期的不同time_lengths

时间:2019-11-02 09:57:10

标签: r lubridate

我是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

1 个答案:

答案 0 :(得分:0)

as.duration可以通过?as.duration获得的文档中所述,as.duration将返回精确时间测量,而as.period将提供相对测量。它继续指出:

  因此,持续时间和期间之间不存在一对一的映射。与期间对象一起使用时,as.duration会提供对期间长度的不精确估算;

因此,使用time_length将为as.periodas.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