У меня есть этот вектор допустимых столбцов для моего сценария
cols <- c("country", "phone", "car")
И это dataframe
test <-
data.frame(
id = c(1, 2, 3),
country = c("us", NA, "uk"),
phone = c(1, 1, NA),
car = c(NA, 0, 1)
)
Цель состоит в том, чтобы создать новый столбец с результатом, в котором условие будет основано только на столбцах, присутствующих в переменной cols. Если все значения для id равны NA
, то res должно быть строкой ничего, если некоторые из них не являются NA, тогда мне нужно это colnames
, в случае, если все столбцы не являются NA, тогда результатом должна быть строка all .
result <-
data.frame(
id = c(1, 2, 3),
country = c("us", NA, NA),
phone = c(1, 1, NA),
car = c(NA, NA, NA),
res = c("country, phone", "phone", "nothing")
)
Я могу сделать это только через case_when()
функцию
mutate(
res = case_when(
!is.na(country) & is.na(phone) & is.na(car) ~ "country",
T ~ "?"
)