如何用dplyr筛选行数>1且value列全相同的分组?
用dplyr筛选分组行数大于1且value列值全相同的组
原始数据框:
ID value 1 a 2 b 2 c 3 d 3 d 4 e 4 e 4 e
目标是筛选出分组行数大于1且组内value列所有值相同的组,得到结果:
ID value 3 d 3 d 4 e 4 e 4 e
你可以用两种方式替换mysterious_condition,实现需求:
方法一:用first()对比组内所有值
完整代码:
df %>% group_by(ID) %>% filter(n() > 1 & all(value == first(value)))
逻辑:all(value == first(value))会检查组内每一行的value是否等于组内第一行的value,如果全部满足则说明组内所有值一致。
方法二:用n_distinct()统计唯一值数量
更简洁的写法:
df %>% group_by(ID) %>% filter(n() > 1 & n_distinct(value) == 1)
逻辑:n_distinct(value)会统计组内value的唯一值个数,等于1时就代表组内所有值都相同。
内容的提问来源于stack exchange,提问作者Juan C
相关产品推荐
相关产品推荐

