我觉得这应该很简单,但我很难在这里找到我想要的东西。
我只是想检查一个日期是否在一年之内。我认为这样的事情会奏效,但事实并非如此:
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的区间?
答案 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'))
它将返回年份,您可以相应地过滤数据。