1

我正在处理 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")))
4

1 回答 1

3

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

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

case_when用于多个ifelse比较。

NHL %>% 
    mutate(Player = case_when(
                       Player == "Kasperi Kapanen" ~ "Kasperi Kapanen", 
                       Player == "Adam" ~ "Adam",
                       TRUE ~ "others" 
                             ))
于 2018-12-27T21:11:35.283 回答