首页 > 解决方案 > 将小于总数 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% 是其他)。

也许有更直接的方法......

标签: rfilterdplyr

解决方案


你可以试试这个:

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执行值。


推荐阅读