cut()を使う方法もあるが、dplyr::case_when()も便利。
test = tibble::tribble(
~tokuten, NA, 15, 50, 45, 76, 90)
test %>% mutate(
hantei = case_when(
is.na(tokuten) ~ NA_character_,
40 < tokuten ~ "不合格",
41 <= tokuten & tokuten <= 70 ~ "補欠合格",
71 <= tokuten ~ "合格"
)
)