我有两个日期向量,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。显然,人们可以使用循环,但必须有一个向量解决方案。帮助赞赏。
答案 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"