代码之家  ›  专栏  ›  技术社区  ›  TheGoat

将列替换为另一列的最大值的对应值

  •  1
  • TheGoat  · 技术社区  · 3 年前

    我想用sales列中最大值对应的类别替换category列。

    我的数据如下:

    df <- data.frame(CATEGORY = c("A","A","A","B","B"), SALES = c(10,20,30,40,50))
    

    我希望用“B”填充类别变量,因为销售中的最大值有一个类别B

    df <- data.frame(CATEGORY = c("B","B","B","B","B"), SALES = c(10,20,30,40,50))
    

    如果使用dplyr语法可以实现这一点,如果有人能给我一些建议,我将非常感激。

    谢谢

    1 回复  |  直到 3 年前
        1
  •  1
  •   PaulS    3 年前

    一个可能的解决方案:

    library(tidyverse)
    
    df <- data.frame(CATEGORY = c("A","A","A","B","B"), SALES = c(10,20,30,40,50))
    
    df %>% 
      mutate(CATEGORY = CATEGORY[which.max(SALES)])
    
    #>   CATEGORY SALES
    #> 1        B    10
    #> 2        B    20
    #> 3        B    30
    #> 4        B    40
    #> 5        B    50