我使用的是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"))
这个结果如下:
> years
[1] 17
手工计算,年数差应该是18。
谁能告诉我如何纠正这个问题?或者,如果这是预期的行为,我如何能够覆盖它?任何反馈都非常感激。
爱丽丝
问题是使用truncate。使用地板,这应该覆盖这个行为。
#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