plyr/dplyr -- recode values based on multi-column conditional logic

You can use case_when()

schedule <- data.frame(requested = c("Yes","No","Yes","Yes","Yes"),
                       approved = c("Yes",NA,"No","Yes","Yes"))
library(dplyr)

schedule %>% 
    mutate(category = case_when(requested == "Yes" & approved == "Yes" ~ "Approved",
                                requested == "No" & is.na(approved) ~ "Not requested",
                                requested == "Yes" & approved == "No" ~ "Requested but not approved"
    ))
#>   requested approved                   category
#> 1       Yes      Yes                   Approved
#> 2        No     <NA>              Not requested
#> 3       Yes       No Requested but not approved
#> 4       Yes      Yes                   Approved
#> 5       Yes      Yes                   Approved

Created on 2019-04-01 by the reprex package (v0.2.1.9000)

7 Likes