将R中不太常见的因子级别合并到“其他”中

我有一个数据框,其中包含一个 State 列,其中包含所有州的值(“阿拉巴马州、阿拉斯加州等)

有没有一种快速的方法来选择前 10 个更频繁的状态,并用“其他”替换所有其他状态

我通过在州一级按频率进行总结来做到这一点,创建一个指标

mutate(bottom_40 = ifelse frequency < x, TRUE,FALSE), 

然后加入并使用逻辑将所有状态替换为“其他”的指示符。

这个解决方案很难看,如果有人能分享一种更干净的方法来做到这一点,我将不胜感激。

回答

fct_lump_nfromforcats可以在这里提供帮助。考虑这个例子:

library(dplyr)
library(forcats)

df <- data.frame(col = factor(rep(LETTERS[1:9], 
                 times = c(40, 10, 5, 27, 1, 1, 1, 1, 1))))

df %>% count(col)

#  col  n
#1   A 40
#2   B 10
#3   C  5
#4   D 27
#5   E  1
#6   F  1
#7   G  1
#8   H  1
#9   I  1

让我们只保留前 3 个级别并将其余级别更改为“其他”。

df %>%
  mutate(col = fct_lump_n(col, 3)) %>%
  count(col)

#    col  n
#1     A 40
#2     B 10
#3     D 27
#4 Other 10


以上是将R中不太常见的因子级别合并到“其他”中的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>