【问题标题】:Taking the Differences Between 2 Dates (R)取两个日期之间的差异 (R)
【发布时间】:2020-12-16 18:47:34
【问题描述】:

我试图在 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))

但是,这也不起作用。

谁能告诉我我做错了什么?

谢谢

【问题讨论】:

    标签: r date lubridate subtraction


    【解决方案1】:

    您需要一个字符输入日期。另外,您使用的是%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
    

    【讨论】:

    • 感谢您的回复!假设我想删除“diff”列中的“days”......我可以使用它吗? d$new_col = as.numeric(d$diff)
    • @Noob 嗨,亲爱的,是的,你是对的!如果您想要正值,请使用d$new_col = abs(as.numeric(d$diff))
    【解决方案2】:

    您可以使用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
    

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

    【讨论】:

      猜你喜欢
      • 2020-03-22
      • 2017-03-27
      • 2020-05-16
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 2014-02-12
      • 2015-09-14
      相关资源
      最近更新 更多