Как сравнить каждую дату в векторе дат с другой датой

#r #lubridate

#r #lubridate

Вопрос:

У меня есть вектор дат, и я хочу выяснить, какие из этих дат попадают в определенный интервал дат. Например:

 library(lubridate)

df$dates <- c(ymd("1999-1-1", "2000-1-1", "2001-1-1"))
comparison_interval <- interval(ymd("2000-12-25"), ymd("2005-1-1"))
  

Я хочу сравнить вектор с указанным интервалом, чтобы увидеть, какие из дат в этом векторе находятся в пределах интервала. В конечном итоге мне нужен логический вектор, который я могу поместить во фрейм данных. Итак, в приведенном выше примере мне нужен вектор FALSE, FALSE, TRUE . Я пытался использовать%внутри%

 df$dates %within% comparison_interval
  

Но он возвращает ошибку, в которой говорится: «Аргумент 1 не является распознанным датой-временем». Каков наилучший способ сделать это?

Комментарии:

1. Я не могу воспроизвести вашу проблему c(ymd("1999-1-1", "2000-1-1", "2001-1-1")) -> v1;v2 <- interval(ymd("2000-12-25"), ymd("2005-1-1"));v1 %within% v2# [1] FALSE FALSE TRUE

2. Теперь я понимаю, что проблема, возможно, была с моими данными. Несмотря на это, Келси решила мою проблему.

Ответ №1:

Вы могли бы сделать это как логическое выражение:

 dates <- c(ymd("1999-1-1", "2000-1-1", "2001-1-1"))
results <- dates >= ymd("2000-12-25") amp; dates <= ymd("2005-1-1")
  

Это даст вам логический вектор.