Я пытаюсь создать новый столбец во фрейме данных на основе групп site
и условий с использованием case_when
. Однако мой вывод, кажется, игнорирует мои группы?
Мой пример:
site = c("a", "b", "b", "d", "d", "d", "e", "f", "g")
distance = c("PA", "PA", "5", "PA", "20", "5", "5", "20", "PA")
df <- data.frame(site,
distance)
Применить условия:
- если в группе есть только PA -> PA
- если есть PA и что-то еще -> неясно
- если есть что-то другое (не PA) -> буфер
Скрипт:
df %>%
group_by(site) %>%
mutate(source = case_when(distance == "PA" ~ "PA",
any(c("PA") %in% distance) ~ "unclear",
TRUE ~ "buffer"))
Мой пример работает хорошо по строкам, но без учета групп?
Ожидаемый результат по группе site
:
site distance source
<fct> <fct> <chr>
1 a PA PA
2 b PA unclear # not PA
3 b 5 unclear
4 d PA unclear # not PA, as the group contains other values!
5 d 20 unclear
6 d 5 unclear
7 e 5 buffer
8 f 20 buffer
9 g PA PA