【问题标题】:Difference between two dates in Months in R [closed]R中两个日期之间的差异[关闭]
【发布时间】:2020-05-16 07:55:08
【问题描述】:

我有一个示例数据集,如下所示:

df= data.frame("Finish_Date"=c("10/2019", "07/2005", "09/2008"), 
               "Recent_Date"="01/2020", stringsAsFactors = F)

我需要创建一个新列并计算这两个日期之间的差异,以便我得到“月”方面的差异。我已经尝试了这篇文章Get the difference between dates in terms of weeks, months, quarters, and years 中的解决方案,但是,我的结果中得到了 NA。

下面是我试过的代码:

df$Due_Date=(as.yearmon(df$Recent_Date, format = "%Y-%m")-
                  as.yearmon(df$Finish_Date, format = "%Y-%m"))*12

我的最终输出应该是这样的:

| Finish_Date | Recent_Date | Due_Date |
|-------------|:-----------:|---------:|
| 10/2019     |   01/2020   |        3 |
| 07/2005     |   01/2020   |      174 |
| 09/2008     |   01/2020   |      136 |

有没有办法得到结果?

【问题讨论】:

  • 这本质上是一个错字。您的日期格式必须与您的字符串匹配;否则,您已经告诉 R 以一种方式查找信息,然后以另一种方式给出它,得到 NA。这就是为什么分步调试很好的原因——在进行任何差异计算之前,您应该已经看到在 as.yearmon 处有 NA,因为您提供了错误的格式

标签: r date datediff


【解决方案1】:

我们需要提供正确的格式。这里是%m/%Y,而不是%Y-%m

library(zoo)
df$Due_Date <- (as.yearmon(df$Recent_Date, format = "%m/%Y")-
               as.yearmon(df$Finish_Date, format = "%m/%Y"))*12
df$Due_Date
#[1]   3 174 136

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 2014-01-04
    • 2017-06-27
    相关资源
    最近更新 更多