#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")
Это даст вам логический вектор.