У меня есть набор данных, который выглядит следующим образом
Group Company
1 A
1 XX
1 A
1 XX
2 XX
2 A
2 XX
2 B
3 B
3 B
3 XX
3 A
4 C
4 C
4 XX
4 XX
Это на самом деле больше, с большим количеством столбцов, строк и значений, но проблема, которую я хочу решить, на данный момент касается этих двух столбцов.
Теперь я бы хотел, чтобы каждая группа заменила Company следующим образом:
Если XX существует в группе, вместе с любым другим уникальным значением компании, тогда компания должна быть заменена этим уникальным значением. Вот так:
Group Company
1 A
1 XX
1 A
1 XX
Должен стать:
Group Company
1 A
1 A
1 A
1 A
Если любая Группа содержит более 2 уникальных значений для Company , включая «XX», то значение Company этой группы должно остаться неизменным, например:
Group Company
2 XX
2 A
2 XX
2 B
Я пытаюсь добиться этого с помощью dplyr, мне удалось сделать то, что я хотел, но только для одного значения Company , вот так:
result <- df%>%
group_by(Group) %>%
mutate(final = ifelse(Company %in% c("A", "XX"), 1,2)) %>%
summarize(test = mean(final))
result$final <- ifelse(result$test== 1, "A", result$Company)
Возможно, я мог бы сделать это с помощью цикла, но я уверен, что это не лучший способ сделать это.
Есть ли чистый способ сделать это с помощью dplyr? (конечно, другие решения приветствуются)
Окончательный кадр данных будет выглядеть следующим образом:
Group Company
1 A
1 A
1 A
1 A
2 XX
2 A
2 XX
2 B
3 B
3 B
3 XX
3 A
4 C
4 C
4 C
4 C
Спасибо всем за потраченное время.