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)