【发布时间】:2019-05-30 19:40:05
【问题描述】:
我有一个看起来像这样的数据集
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
它实际上更大,有更多的列、行和值,但我现在要解决的问题涉及这两列。
现在,我想要实现的是,对于每个 Group,用以下方式替换 Company:
如果 XX 与任何其他唯一公司值一起存在于组中,则应将公司替换为该唯一值。像这样:
Group Company
1 A
1 XX
1 A
1 XX
应该变成:
Group Company
1 A
1 A
1 A
1 A
如果任何 Group 包含 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
感谢大家的宝贵时间。
【问题讨论】:
标签: r dplyr combinations