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