【发布时间】:2019-04-15 10:54:04
【问题描述】:
我有一个 tibble,我想删除具有重复值的行,但偏好从最大组中删除。
示例数据:
(tb <- tibble(group = rep(LETTERS[1:3], times = 3:1),
value = c(4,2,1,1,2,1)))
# A tibble: 6 x 2
group value
<chr> <dbl>
1 A 4
2 A 2
3 A 1
4 B 1
5 B 2
6 C 1
这里,值 1 和 2 是重复的。对于 1 的情况,我希望将其从 2 个较大的组(A 和 B)中删除,并保留 C 的值。同样,值 2 的行应该从组 A 中删除。(当组大小相同时,从哪个组中删除该行并不重要。)
想要的结果
# A tibble: 3 x 2
group value
<chr> <dbl>
1 A 4
2 B 2
3 C 1
使用tb %>% filter(!duplicated(value)) 可以删除重复,但不考虑组大小:
实际结果
# A tibble: 3 x 2
group value
<chr> <dbl>
1 A 4
2 A 2
3 A 1
在删除重复项时是否有一个(简单的)tidyverse 可以考虑组大小?
【问题讨论】:
-
如果A有4、2、1、1、1、1、1,B有5、2、2,那么结果应该是什么?即,最初组 A 较大,但如果我们先删除 1,那么在考虑删除 2 时,B 会更大。在这种情况下,要删除的数字顺序也开始很重要,所以也许只有初始大小很重要?
-
@JuliusVainora 好点。我的数据在组内不包含任何重复项,并且重复项的总量
标签: r dplyr duplicates