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
我正在使用 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