计算两个日期之间的差异 (R)

Taking the Differences Between 2 Dates (R)

我正在尝试在 R 中计算两个日期之间的差异。通常,我可以在 MS Excel 中完成此操作,但我想通过在 R 中执行此操作来尝试学习一些新东西。日期的格式为:年-月-日,格式为“因子”:

# how the data looks like
d <- data.frame (

"day_a" = c("2010-12-25", "2020-10-31"),
"day_b" = c("2011-12-24", "2021-01-01")

)

d$day_a = as.factor(d$day_a)
d$day_b = as.factor(d$day_b)

首先,我尝试做一个简单的减法:

   #my first attempt to take the difference in days
    d$day_1 = as.Date(d$day_a, "%Y/%m/%d")
    d$day_2 = as.Date(d$day_b, "%Y/%m/%d")
    
    d$diff = d$day_1 - d$day_2

然后,我尝试使用“lubdridate”库:

library(lubridate)
d$diff=interval(ymd(d$day_1),ymd(d$day_2))

然而,这也不起作用。

有人可以告诉我我做错了什么吗?

谢谢

您需要为日期输入字符。此外,您使用的是 %Y/%m/%d 并且在 d 数据中定义为 Y-m-d 以便日期转换可以正常工作:

d <- data.frame (
  
  "day_a" = c("2010-12-25", "2020-10-31"),
  "day_b" = c("2011-12-24", "2021-01-01")
  
)

d$day_a = as.factor(d$day_a)
d$day_b = as.factor(d$day_b)

d$day_1 = as.Date(as.character(d$day_a))
d$day_2 = as.Date(as.character(d$day_b))

d$diff = d$day_1 - d$day_2

输出:

d
       day_a      day_b      day_1      day_2      diff
1 2010-12-25 2011-12-24 2010-12-25 2011-12-24 -364 days
2 2020-10-31 2021-01-01 2020-10-31 2021-01-01  -62 days

您可以使用 date 个对象的简单减法并将结果转换为数值:

d <- data.frame (
  day_a = c("2010-12-25", "2020-10-31"),
  day_b = c("2011-12-24", "2021-01-01")
)

d$timediff <- as.numeric(as.Date(d$day_b) - as.Date(d$day_a))

       day_a      day_b timediff
1 2010-12-25 2011-12-24      364
2 2020-10-31 2021-01-01       62

请注意,新列包含以天为单位的时差。