У меня есть набор данных с симптомами (20+), симптомы классифицируются как Да / Нет / Неизвестно. Я хотел бы создать новый столбец, в котором будет указано, нет ли у субъекта (ID
) симптомов (я определяю это, поскольку у них нет симптомов, с помощью «Да»).
У меня есть образец набор данных ниже, и я могу создать столбец по желанию, но похоже, что должен быть лучший / более чистый способ, просто используя dplyr::mutate()
, а не фильтрацию и присоединение, которые я делаю?
library(dplyr)
test <- tibble(
ID = c(1:10),
col1 = sample(c("Yes", "No", "Unknown"), 10, replace = TRUE),
col2 = sample(c("Yes", "No", "Unknown"), 10, replace = TRUE),
col3 = sample(c("Yes", "No", "Unknown"), 10, replace = TRUE)
)
left_join(test, test %>%
filter_at(vars(col1:col3), any_vars(. == "Yes")) %>%
mutate(any_symptoms = "Yes") %>%
select(ID, any_symptoms),
by = "ID"
) %>%
mutate(any_symptoms = recode(any_symptoms, .missing = "No"))
#> # A tibble: 10 x 5
#> ID col1 col2 col3 any_symptoms
#> <int> <chr> <chr> <chr> <chr>
#> 1 1 Unknown Unknown Unknown No
#> 2 2 Unknown No No No
#> 3 3 Yes Yes Unknown Yes
#> 4 4 No Unknown Unknown No
#> 5 5 No No Unknown No
#> 6 6 Unknown Yes Unknown Yes
#> 7 7 Yes Unknown Unknown Yes
#> 8 8 No No No No
#> 9 9 No Unknown Unknown No
#> 10 10 No No No No
Создано 29 мая 2020 г. пакетом REPEX (v0.3.0)