【问题标题】:What's the best way to check if a date is within a year?检查日期是否在一年内的最佳方法是什么?
【发布时间】:2018-02-16 16:42:59
【问题描述】:

我觉得这应该很简单,但我很难在这里找到我想要的东西。

我只想检查日期是否在一年内。我认为这样的事情会起作用,但它没有:

filter(mdy(COV_EFF_DTE) %within% YEAR_SOLD)

...其中 COV_EFF_DTE 是 mdy 格式的日期(例如 2015 年 1 月 15 日),而 YEAR_SOLD 只是表示年份的整数(例如 2015 年)。

我有一些东西可以完成这项工作,但它真的很丑,我想简化代码。这是我目前的解决方案...

filter(mdy(COV_EFF_DTE) %within% interval(mdy(paste("1/1/",YEAR_SOLD)),mdy(paste("12/31/",YEAR_SOLD))))

就像我说的,这行得通,但必须有更好的东西。有没有一种简单的方法可以将一年转换为从 1/1/YYYY 到 12/31/YYYY 的区间?

【问题讨论】:

    标签: r lubridate


    【解决方案1】:

    我在包lubridate 中使用year() 从日期获取数字年份值。

    library(lubridate)
    
    year <- 1998L
    
    my_date <- ymd(19980301)
    
    year(my_date) %in% year
    

    【讨论】:

    • 哎呀,我是个白痴……事后看来,这似乎很明显……谢谢。这正是我所需要的。
    【解决方案2】:
     grepl(as.character(YEAR_SOLD),COV_EFF_DTE)
    

    【讨论】:

      【解决方案3】:

      试试这个:year(as.Date(COV_EFF_DTE, format = '%m/%d/%Y')) 它将返回年份,您可以相应地过滤数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-25
        • 2012-08-29
        • 2011-03-20
        • 2011-12-25
        • 2020-12-08
        • 2020-01-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多