Dúvida com Datas

Oi pessoal, estou com alguns dados relacionados a filiados em partidos politicos…
Nos dados tenho uma variável com o nome situação, que consta a atual situação da filiação(cancelado, desfiliado, regular)…

Gostaria de filtrar pra verificar a situação até abril de 2019, fiz assim:
library(lubridate)
inicio <- dmy("01-05-2019")
final <- dmy("01-05-2020")
interv<-interval(inicio,final)

Teste<- dataset %>% mutate(Ate_Abril_19=case_when(data_da_desfiliacao|data_do_cancelamento %in% interv,"Estava Ok","Não Ok"),

só que tenho o seguinte erro:

Error in Ops.Date(data_da_desfiliacao, data_do_cancelamento %in% interv) : 
  | not defined for "Date" objects

Como posso resolver e conseguir aplicar esse filtro que estou tentando?

Parece que objetos da classe Date não funcionam com o operador |.
Veja se você consegue resolver o problema fazendo o seguinte:

library(lubridate)

inicio <- dmy("01-05-2019")
final <- dmy("01-05-2020")
interv<-interval(inicio,final)

Teste <- dataset %>%
  mutate(
    Ate_Abril_19 = if_else(
    data_da_desfiliacao %within% interv | data_do_cancelamento %within% interv,
    "Estava Ok",
    "Não Ok"
    )
  )

Eu testei com outros dados e parece que funcionou.

Obs: A função case_when( ) é muito útil quando você tem mais de uma condição, se esse não é o caso, eu prefiro usar o if_else( ) .
Para usar o case_when( ) você deveria fazer:

Teste <- dataset %>%
  mutate(Ate_Abril_19 = case_when(
data_da_desfiliacao %within% interv | data_do_cancelamento %within% interv ~  "Estava Ok",
!data_da_desfiliacao %within% interv | !data_do_cancelamento %within% interv ~ "Não Ok"
)
  )
2 curtidas