如何将因素分解为“其他”(不基于大小)

时间:2018-12-27 20:53:16

标签: r forcats

我正在使用NHL球员数据,而我基本上想将所选球员得分与其他人群进行比较。所以我有如下播放器数据:

 Player Season Team  Position    GP   TOI     G     A     P    P1 `P/60`
 <chr>   <int> <chr> <chr>    <int> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
 Aaron~   2019 FLA   D           35 603.      3     2     5     3   0.5 
 Adam ~   2019 CBJ   D            4  35.5     0     0     0     0   0  
Adam ~   2019 T.B   L           23 218.      2     7     9     5   2.48

,以此类推。我想比较其中一项观察结果与其余数据集之间的摘要统计量。

 Player Season Team  Position    Summary Statistic
 <chr>   <int> <chr> <chr>             <int>
 Kasperi   2019 FLA   D                  45 
 "Others"  2019 CBJ   D                  53 

我已经看到fct_lump用于选择排名靠前的记录,但是当我尝试类似于使用播放器名称的方法时,却无法正常工作。

NHL %>% 
 mutate(Player = fct_lump(Player,
                              Kasperi Kapanen = "Kasperi Kapanen",
                              other = !("Kasperi Kapanen")))

1 个答案:

答案 0 :(得分:2)

fct_lump不适合处理您想要的灵活性。您应该针对所有其他观察结果使用 dplyr的 if_else

library(dplyr)
NHL %>% 
    mutate(Player = if_else(Player == "Kasperi Kapanen", "Kasperi Kapanen",
                                                         "others"))

OR case_when进行多个 ifelse 比较。

NHL %>% 
    mutate(Player = case_when(
                       Player == "Kasperi Kapanen" ~ "Kasperi Kapanen", 
                       Player == "Adam" ~ "Adam",
                       TRUE ~ "others" 
                             ))