【问题标题】:why months work in one case in R but not in another? [duplicate]为什么几个月在 R 中的一种情况下有效,而在另一种情况下无效? [复制]
【发布时间】:2019-11-14 18:29:06
【问题描述】:

如下所示,我试图理解为什么它在一种情况下是 NA 而在另一种情况下不是。

> x<-"2017-10-31"
> as.Date(x) - months(6)
[1] NA
> x<-"2018-07-31"
> as.Date(x) - months(6)
[1] "2018-01-31"
> 

【问题讨论】:

标签: r


【解决方案1】:

那是因为as.Date("2017-10-31") - months(6)(确切地说)是 2017-04-31,它不存在。

如果您想减去月份而不用担心超出月份的最后一天(现在是月历!),请使用 lubridate 包中的奇妙函数 %m+%%m-%

as.Date("2017-10-31") %m-% months(6)

[1] "2017-04-30"

更多详情,?lubridate::`%m+%`

【讨论】:

    【解决方案2】:

    我们可以使用lubridate 中的%m- 来解决问题

    library(lubridate)
    as.Date(x) %m-% months(6)
    # [1] "2017-04-30"
    

    【讨论】:

      【解决方案3】:

      因为当您尝试从 10 月 31 日减去 6 个月时,4 月只有 30 天。它返回NA

      > x <- "2017-10-31"
      > as.Date(x) - months(6)
      [1] NA
      > x <- "2017-10-30"
      > as.Date(x) - months(6)
      [1] "2017-04-30"
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-09
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        • 2018-10-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多