I have a toy electoral db and need to calculate incumbency but cannot using grouped values and dplyr::lag
race <- data.frame(city=rep(1,6),
date=c(3,3,2,2,1,1),
candidate=c("A","B","A","C","D","E"),
winner=rep(c(1,0),3))
I made a convoluted attempt that is not ideal (as I have to merge in non-winners:
race %>%
group_by(city,date) %>%
mutate(win_candidate=candidate[winner==1]) %>%
filter(winner==1) %>%
ungroup() %>%
group_by(city) %>%
mutate(incumbent=lead(win_candidate, n=1, default = NA_character_),
incumbent=ifelse(candidate==incumbent,1,0)) %>%
select(-win_candidate)