r - 将小于总数 x% 的属性重新分类为“其他”
问题描述
好的,所以我有这样的数据:
ID Name Job
001 Bill Carpenter
002 Wilma Lawyer
003 Greyson Lawyer
004 Eddie Janitor
我想将这些组合在一起进行分析,因此任何出现少于整体x % 的工作都将被分组到“其他”中
我该怎么做,这是我尝试过的:
df %>%
group_by(Job) %>%
summarize(count = n()) %>%
mutate(pct = count/sum(count)) %>%
arrange(desc(count)) %>%
drop_na()
现在我知道百分比是多少,但我如何将其整合到原始数据中以使X以下的所有内容为“其他”。(假设小于或等于 25% 是其他)。
也许有更直接的方法......
解决方案
你可以试试这个:
library(dplyr)
df %>%
count(Job) %>%
mutate(n = n/sum(n)) %>%
left_join(df, by = 'Job') %>%
mutate(Job = replace(Job, n <= 0.25, 'Other'))
为了将我们的计算整合到原始数据中,我们先执行 a left_join
,然后replace
执行值。
推荐阅读
- android - 从支持库重构为具有依赖项的 AndroidX
- loopbackjs - Loopback:如何在 afterRemote 中访问关系
- python - Keras/Tensorflow:单输出的组合损失函数
- sorting - 对 Collection 进行分页和排序
- opengl - OpenGL over Windows Remote 的当前状态和解决方案
- textbox - 根据文本长度减小字体大小
- cordova - 无法从流星科尔多瓦应用程序连接到服务器
- node.js - 如何根据用户类型使用 node/express 提供不同的 css 文件?
- javascript - ExtJS - 当用户点击行时显示新标签
- c# - 如何对等待异步任务进行单元测试?