R - 时间长度问题

问题描述 投票:0回答:1

我使用的是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。

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

爱丽丝

r lubridate
1个回答
1
投票

问题是使用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
© www.soinside.com 2019 - 2024. All rights reserved.