Replace NAs in column based on values in other column r dplyr

Advertisements

I have a df :

df <- data.frame(ID = c(1, 2, 3, 3, 4, 5, 5, 7, 7, 8),
                 var1 = c('a', 'b', 'c', 'c', 'd', 'e', 'f', 'g', 'h', 'h'),
                 var2 = c(1, 1, 1, 0, 1, 1, 0, 0, 1, 0),
                 var3 = c(21, 50, 40, NA, 29, 45, NA, NA, NA, 46))

I would like to replace NAs in var3 based on the values in ID, with something like the following:

df %>% 
  mutate(var3 = case_when(var3 == NA  & ID == 3 ~ 5,
                        var3 == NA  & ID == 5 ~ 5,
                        var3 == NA  & ID == 7 ~ 5,
                        TRUE ~ var3
  ))

But for some reason it doesn’t work?

>Solution :

df %>% 
  mutate(var3 = case_when(is.na(var3)==TRUE  & ID == 3 ~ 5,
                          is.na(var3)==TRUE  & ID == 5 ~ 5,
                          is.na(var3)==TRUE  & ID == 7 ~ 5,
                          TRUE ~ var3
  ))

Leave a ReplyCancel reply