查找日期向量中的日期是否介于两个日期之间

时间:2017-05-29 22:30:58

标签: r vector

我有两个日期向量,a和b。矢量a有两个日期定义日期范围。向量b可以有很多元素,但我想知道b的哪个(如果有的话)元素落在a的日期范围内。例如,

 a <- c(as.Date("2012-01-01"), as.Date("2012-02-01"))
 b <- c(as.Date("2011-11-09"), as.Date("2012-01-15"), as.Date("2012-5-15"))

向量a和b可以是zoo / xts对象,其数值分配给日期,或者不是根据需要帮助解决方案。

期望的答案是b [2],2012-01-15。显然,人们可以使用循环,但必须有一个向量解决方案。帮助赞赏。

2 个答案:

答案 0 :(得分:2)

可以使用lubridate轻松完成,例如:

library(lubridate)

我们首先定义间隔a

a <- as.interval(a)

然后使用%within%函数评估b的任何元素是否属于a

b[b %within% a]

[1] "2012-01-15"

答案 1 :(得分:2)

我们也可以使用between中的dplyr。顾名思义,between会提供介于两个值之间的值(此处为a[1]a[2])。

library(dplyr)
b[between(b, a[1], a[2])]

#[1] "2012-01-15"

或者如果我们对基础R解决方案感兴趣,最简单的是

b[b > a[1] & b < a[2]]

#[1] "2012-01-15"