Мы можем использовать coalesce
от dplyr
. Можно иметь столбец NA
only типа logical
, и при использовании coalesce
может иметь значение sh. Один из вариантов - внести изменения в класс для этого столбца, и тогда coalesce
будет работать
library(dplyr)
df1 %>%
mutate_if(~ all(is.na(.)) && is.logical(.), ~ NA_character_) %>%
transmute(Summary = case_when(rowSums(!is.na(.)) > 1 ~ "Error",
TRUE ~ coalesce(!!! .)))
# Summary
#1 Cat
#2 Dog
#3 Mouse
#4 Error
#5 Horse
#6 <NA>
Данные
df1 <- structure(list(One = c("Cat", NA, NA, "Cat", "Horse", NA), Two = c(NA,
"Dog", NA, NA, NA, NA), Three = c(NA, NA, NA, "Rat", NA, NA),
Four = c(NA, NA, "Mouse", NA, NA, NA), Five = c(NA, NA, NA,
NA, NA, NA)), class = "data.frame", row.names = c(NA, -6L
))