Я работаю с набором данных, который имеет много столбцов, называемых status1, status2 и т. Д. В этих столбцах говорится, что кто-то освобожден, завершен, зарегистрирован и т. Д.
К сожалению, входные данные освобожденыне соответствует;Вот пример:
library(dplyr)
problem <- tibble(person = c("Corey", "Sibley", "Justin", "Ruth"),
status1 = c("7EXEMPT", "Completed", "Completed", "Pending"),
status2 = c("exempt", "Completed", "Completed", "Pending"),
status3 = c("EXEMPTED", "Completed", "Completed", "ExempT - 14"))
Я пытаюсь использовать case_when (), чтобы создать новый столбец с окончательным статусом.Если это когда-либо говорит, завершено, то они завершены.Если он когда-либо говорит, что освобожден, не говоря, полный, то они освобождаются.
Важной частью является то, что я хочу, чтобы мой код содержал («status») или какой-то эквивалент, который предназначен только для столбцов статуса и не требует их ввода, и я хочу, чтобы он требовал толькочастичное совпадение строк для исключения.
Что касается использования содержимого с case_when, я видел этот пример, но я не смог применить его к своему случаю: мутировать с case_when и содержит
Это то, что я пытался использовать до сих пор, но, как вы можете догадаться, это не сработало:
library(purrr)
library(dplyr)
library(stringr)
solution <- problem %>%
mutate(final= case_when(pmap_chr(select(., contains("status")), ~
any(c(...) == str_detect(., "Exempt") ~ "Exclude",
TRUE ~ "Complete"
))))
Вот как я хочу, чтобы конечный продукт выглядел так:
solution <- tibble(person = c("Corey", "Sibley", "Justin", "Ruth"),
status1 = c("7EXEMPT", "Completed", "Completed", "Pending"),
status2 = c("exempt", "Completed", "Completed", "Pending"),
status3 = c("EXEMPTED", "Completed", "Completed", "ExempT - 14"),
final = c("Exclude", "Completed", "Completed", "Exclude"))
Спасибо!