【问题标题】:Mutate a column and fill its value from another column based on matchin gof two columns变异一列并根据两列的匹配从另一列填充其值
【发布时间】:2020-10-08 11:23:13
【问题描述】:

我有一个 df

Type             Total      
Apple              6
Banana             2
Grapes             7
Unidentified       8

我想将 Unidentified Type 值替换为具有最高 Total 值的另一种类型(Dominant Type)。从上面的例子中,Grapes 是因为 Grapes 7 的 Total 值是除 Unidentified 之外的所有其他 Total 值中最高的

Type             Total          Dominant Type
Apple              6                 NA
Banana             2                 NA
Grapes             7                 NA
Unidentified       8               Grapes

我将如何在 dplyr 中完成这项工作?

【问题讨论】:

    标签: r dplyr tidyverse


    【解决方案1】:

    使用mutate 创建一个新列,条件是Type 等于Unidentified;如果是,则设置为Total的最大值,不包括Unidentified对应的Total的值。

    df = fread('Type             Total      
    Apple              6
    Banana             2
    Grapes             7
    Unidentified       8')
    
    df %>% 
        dplyr::mutate(
            `Dominant Type` = ifelse(Type == "Unidentified", 
                Type[which.max(Total[!Type=="Unidentified"])], 
                NA
                )
            )
    
               Type Total      Dominant Type
    1:        Apple     6   <NA>
    2:       Banana     2   <NA>
    3:       Grapes     7   <NA>
    4: Unidentified     8 Grapes
    

    【讨论】:

      猜你喜欢
      • 2021-03-16
      • 1970-01-01
      • 1970-01-01
      • 2020-02-17
      • 2020-11-26
      • 1970-01-01
      • 2021-01-24
      • 1970-01-01
      • 2022-01-16
      相关资源
      最近更新 更多