2017-05-29 128 views
-1

我有兩個日期向量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可以是與分配給該日期的數值動物園/ XTS對象,或者不根據需要幫助的溶液。

想要的答案是b [2],2012-01-15。顯然,可以使用循環,但必須有一個向量解決方案。幫助讚賞。

+0

https://stackoverflow.com/questions/23622338/subset-a-dataframe-between-的可能的複製2日期 – akrun

回答

2

它可以輕鬆完成lubridate例如:使用%within%功能如果b任何元素落入a我們評估

a <- as.interval(a) 

然後:

library(lubridate) 

我們首先定義的時間間隔a

b[b %within% a] 

[1] "2012-01-15" 
2

我們還可以使用dplyrbetween。顧名思義,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" 
相關問題