Pet*_*ter 2 r tidyverse forcats
该示例显示了不同工厂生产产出的测量结果,其中第一列表示工厂,最后一列表示生产量。
factory <- c("A","A","B","B","B","B","B","C","D")
production <- c(15, 2, 1, 1, 2, 1, 2,20,5)
df <- data.frame(factory, production)
df
factory production
1 A 15
2 A 2
3 B 1
4 B 1
5 B 2
6 B 1
7 B 2
8 C 20
9 D 5
Run Code Online (Sandbox Code Playgroud)
现在,我想根据该数据集中的总产量将工厂分为更少的级别。
使用正常的 forcats::fct_lump,我可以将它们按 thy 出现的行数进行集中,例如用于制作 3 个级别:
library(tidyverse)
df %>% mutate(factory=fct_lump(factory,2))
factory production
1 A 15
2 A 2
3 B 1
4 B 1
5 B 2
6 B 1
7 B 2
8 Other 20
9 Other 5
Run Code Online (Sandbox Code Playgroud)
但我想根据总和(产量)对它们进行汇总,保留前 n=2 个工厂(按总产量)并将其余工厂汇总。期望的结果:
1 A 15
2 A 2
3 Other 1
4 Other 1
5 Other 2
6 Other 1
7 Other 2
8 C 20
9 Other 5
Run Code Online (Sandbox Code Playgroud)
有什么建议么?
谢谢!
只需指定权重参数w:
> df %>%
+ mutate(factory = fct_lump_n(factory, 2, w = production))
factory production
1 A 15
2 A 2
3 Other 1
4 Other 1
5 Other 2
6 Other 1
7 Other 2
8 C 20
9 Other 5
Run Code Online (Sandbox Code Playgroud)
注意:使用是因为不再推荐使用forcats::fct_lump_n泛型。fct_lump
| 归档时间: |
|
| 查看次数: |
1741 次 |
| 最近记录: |