【问题标题】:Return column name based on condition else return NA根据条件返回列名,否则返回 NA
【发布时间】:2021-03-13 13:24:36
【问题描述】:
Name GM01 GM02 GM05
    A 99   0   0
    B 1   70  0
    C 0    0  13
    D 0    1   0

我想创建一个新列“结果”,它从所有以“GM”开头且大于或等于 70 的列返回正确的“GM”列名,否则返回 NA(例如在C行) 我已经尝试过了,但我不知道要包含 else 语句以返回 NA

wwtp_catchments$result <-names(wwtp_catchments[2:ncol(wwtp_catchments)])[max.col(  
wwtp_catchments[2:ncol(wwtp_catchments)]    >= 70 )] 

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    当行中没有大于 70 的值时,您可以使用 rowSumsresult 值转换为 NA

    cols <- grep('GM', names(wwtp_catchments))
    wwtp_catchments$result <- names(wwtp_catchments[cols])[max.col(wwtp_catchments[cols] >= 70)] 
    wwtp_catchments$result[rowSums(wwtp_catchments[cols] >= 70) == 0] <- NA
    
    wwtp_catchments
    
    #  Name GM01 GM02 GM05 result
    #1    A   99    0    0   GM01
    #2    B    1   70    0   GM02
    #3    C    0    0   13   <NA>
    #4    D    0    1    0   <NA>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 2015-06-06
      • 2020-10-23
      • 1970-01-01
      • 2021-08-28
      • 2016-01-21
      相关资源
      最近更新 更多