За исключением одного из условий, то есть не-NA элементов в обоих 'a', 'b', и они не равны друг другу, все остальные условия выполняются с coalesce
.Таким образом, мы можем сделать case_when
, чтобы сгенерировать «множественные значения» на основе последнего условия и всех других, применив coalesce
library(dplyr)
df1 %>%
mutate(c = case_when(!is.na(a) & !is.na(b) & a != b ~ "multiple_values",
TRUE ~ as.character(coalesce(a, b))))
# a b c
#1 1 NA 1
#2 2 3 multiple_values
#3 3 3 3
#4 NA 2 2
#5 NA NA <NA>
data
df1 <- structure(list(a = c(1L, 2L, 3L, NA, NA), b = c(NA, 3L, 3L, 2L,
NA)), class = "data.frame", row.names = c(NA, -5L))