R - time_length 问题

R - issue with time_length

我正在使用 R 包 lubridate 来计算两个日期之间的年差。该代码在绝大多数时间都运行良好,但当两个日期的日期和月份相同时似乎会出现问题。例如:

#Specifying date 1
date1 <- as.Date("1993/04/01")

#Specifying date 2
date2 <- as.Date("2011/04/01")

#Calculating years between date 1 and date 2
years <- trunc(time_length(difftime(date2, date1), "years"))

这个returns以下:

> years
[1] 17

手算,年份差应该是18

谁能告诉我如何纠正这个问题?或者,如果这是预期的行为,我该如何覆盖它?非常感谢任何反馈。

爱丽丝

问题在于使用截断。使用地板,这应该会覆盖此行为。

#Specifying date 1
date1 <- as.Date("1993/04/01")

#Specifying date 2
date2 <- as.Date("2011/04/01")

#Calculating years between date 1 and date 2
years <- floor(time_length(difftime(date2, date1), "years"))
years

##As mentioned in the comments, round also works
years_round <- round(time_length(difftime(date2, date1), "years"),0)
years_round

###A third possible approach
years_interval interval(date1, date2) %/% years(1)
years_interval