r - 删除重复值,优先从最大组中删除
问题描述
我有一个小标题,我想删除具有重复值的行,但偏好从最大组中删除。
示例数据:
(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 来考虑组大小?
解决方案
那个怎么样:
tb %>% group_by(group) %>%
mutate(size = n()) %>% group_by(value) %>%
filter(size == min(size))
group value size
<chr> <dbl> <int>
1 A 4 3
2 B 2 2
3 C 1 1
推荐阅读
- python - Numpy Dot Product - 形状相同的形状错误
- postgresql - 手动启动 PostgreSQL 服务器并设置详细模式以查看所有查询
- firebase-hosting - Flutter Web 应用程序将部署到 localhost 但不会部署到 firebase
- javascript - 在 d3 力布局中对气泡进行排序
- python - Pandas 无法打开 csv 文件:FileNotFoundError:[Errno 2] 文件 xyz.csv 不存在:
- julia - 朱莉娅 => 的目的是什么
- docker - 当工作节点从 Docker Swarm 中的网络问题重新连接时,如何保持原始工作容器处于活动状态
- git - 拉入子模块,现在在子模块中有一个无关的提交
- r - 如何将图例添加到具有多个组的 ggplot 中,这些组在数据框中具有多列数据
- r - 如何根据每行可变数量的模式匹配将行分成列