日期差异计算不准确
Calculation inaccuracy in date difference
我试图使用 Sys.time()
查找从开始日期到现在的天数的持续时间。我使用以下命令来查找持续时间。但是R中的输出是完全错误的。
person$duration <- lubridate::interval(as.Date(person$create_date, "%m/%d/%y"),Sys.Date()) %/% days()
输出:
Name create_date duration
A 09/23/2014 -811
B 05/05/2014 -670
应该是 1380 天 不是 -811。我不确定为什么它是负数以及为什么它是“-811”或“-670”。
使用简单的差异
as.numeric(as.Date("2018-07-05") - Sys.Date())
# use abs() if the date it's in the past
你们非常亲密。由于您的年份由 4 位数字组成,因此您需要大写 Y。
library(lubridate)
interval(as.Date("09/23/2014", "%m/%d/%Y"),Sys.Date()) %/% days()
给出 1380。
在您的代码中,它只需要前 2 位数字,并且假定您需要当前世纪,即 2020 年。准确地说:如果您提供两个数字作为年份,则转换 69 到 99 之间的值到 1969-1999,00 到 68 之间的值到 2000-2068。
interval(as.Date("09/23/2020", "%m/%d/%Y"),Sys.Date()) %/% days()
也给出-811。
我试图使用 Sys.time()
查找从开始日期到现在的天数的持续时间。我使用以下命令来查找持续时间。但是R中的输出是完全错误的。
person$duration <- lubridate::interval(as.Date(person$create_date, "%m/%d/%y"),Sys.Date()) %/% days()
输出:
Name create_date duration
A 09/23/2014 -811
B 05/05/2014 -670
应该是 1380 天 不是 -811。我不确定为什么它是负数以及为什么它是“-811”或“-670”。
使用简单的差异
as.numeric(as.Date("2018-07-05") - Sys.Date())
# use abs() if the date it's in the past
你们非常亲密。由于您的年份由 4 位数字组成,因此您需要大写 Y。
library(lubridate)
interval(as.Date("09/23/2014", "%m/%d/%Y"),Sys.Date()) %/% days()
给出 1380。
在您的代码中,它只需要前 2 位数字,并且假定您需要当前世纪,即 2020 年。准确地说:如果您提供两个数字作为年份,则转换 69 到 99 之间的值到 1969-1999,00 到 68 之间的值到 2000-2068。
interval(as.Date("09/23/2020", "%m/%d/%Y"),Sys.Date()) %/% days()
也给出-811。