检查日期是否在一年之内的最佳方法是什么?

时间:2018-02-16 16:42:59

标签: r lubridate

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

我只是想检查一个日期是否在一年之内。我认为这样的事情会奏效,但事实并非如此:

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的区间?

3 个答案:

答案 0 :(得分:3)

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

library(lubridate)

year <- 1998L

my_date <- ymd(19980301)

year(my_date) %in% year

答案 1 :(得分:1)

 grepl(as.character(YEAR_SOLD),COV_EFF_DTE)

答案 2 :(得分:1)

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