检查日期向量中是否存在位于给定范围内的值

kss*_*kss 6 if-statement r vector lubridate

我有一个日期向量,想要检查某个特定日期,在向量中的150天内以及该日期之前的150天内,向量中是否存在值。我的数据的一个简单示例如下所示:

given_date <- as.Date('2006-06-06')
dates <- as.Date(c("2005-02-22", "2005-04-26", "2005-08-02", "2005-10-04", "2005-12-06", "2006-03-14", "2006-06-06"))
Run Code Online (Sandbox Code Playgroud)

我知道我可以做的某个日期会given_date %in% dates返回TRUE

但是,对于我的问题,我想检查类似于以下内容的内容:

ifelse(range(given_date-1, given_date-150) %in% dates & range(given_date-151, given_date-300) %in% dates, TRUE, FALSE)

因此对于我提供的数据,将返回结果,TRUE因为在150天内存在一个日期given_date(例如2006-03-14存在于(2006-01-07,2006-06-06)范围内),并且在此日期之前的150天内存在另一个(例如,2005-10-04存在于(2005-08-10,2006-01-07)的范围内)。

感谢您对我如何在R中做到这一点的任何帮助!

G. *_*eck 2

这会检查两个条件中的每一个,然后对它们进行 AND 运算。

any( dates >= given_date - 150 & dates < given_date ) &
  any( dates >= given_date - 300 & dates < given_date - 150 ) 
## [1] TRUE
Run Code Online (Sandbox Code Playgroud)

更新

固定的。