r - tidyverse 分组将小组组合成“其他”
问题描述
假设我想总结某个数据框列:
> starwars %>% count(eye_color)
# A tibble: 15 x 2
eye_color n
<chr> <int>
1 black 10
2 blue 19
3 blue-gray 1
4 brown 21
5 dark 1
6 gold 1
7 green, yellow 1
8 hazel 3
9 orange 8
10 pink 1
11 red 5
12 red, blue 1
13 unknown 3
14 white 1
15 yellow 11
有很多小类别,例如“蓝灰色”或“粉红色”。我想将它们全部合并到“其他”中。有一个多步骤的过程来做到这一点:
starwars %>%
add_count(eye_color) %>%
mutate(eye_color = if_else(n < 5, "other", eye_color)) %>%
count(eye_color)
还有一种方法可以使用单个命令来完成。我以前在某个地方看到过这个技巧,但现在找不到了。
解决方案
写下@Jordan 的建议:
更新:使用 Camille 的修复:
starwars %>% mutate(eye_color_grp = as.factor(eye_color) %>%
forcats::fct_lump_min(min = 5, other_level = "Other")) %>%
count(eye_color_grp, sort = TRUE)
推荐阅读
- javascript - 变量调用在订阅者函数之外返回值“未定义”
- oracle - 创建编辑视图时出现错误 ORA-00933
- python-3.x - 为什么我收到 DataFrame 点函数的矩阵未对齐错误?
- pandas - 如何在熊猫数据框列上应用条件?
- flutter - Flutter:将整个应用程序上的默认 textDirection 更改为 RTL
- ruby-on-rails - Has_many 通过关系“user_roles”不存在
- python-3.x - 在 Python 中实现抽象类的最佳方法
- java - Postgres 查询 - 使用文本类型更新 json 列中的字段
- elasticsearch - 从 Spring Data Elasticsearch 4.0.0.M3 迁移到 M4
- python - 如何在python中为类和子类添加单独的id