【问题标题】:Select max value across group - R/Dplyr solution跨组选择最大值 - R/Dplyr 解决方案
【发布时间】:2021-01-19 06:54:09
【问题描述】:

我希望这很容易回答。我有一些数据,我想找到一组中的最大值,但是我的输出有问题。

虚拟数据:

ID  value
1     10
1     2
1     3
1     4
2     1
2     2
2     3
3     4
3     5
3     6

我想找到各组中的最大值,但我希望最大值位于记录的第一行,即我的输出应如下所示:

ID  value   max_value
1      10         10
1      2    
1      3    
1      4    
2      1          3
2      2    
2      3    
3      4          6
3      5    
3      6    

我已设法获得每个记录/ID 的最大值,但我无法将其作为每个 ID 的第一行,因为我想保留数据库中的所有行。

library(dplyr)
df <- df %>%
group_by(ID) %>%
filter(value == max(value)) %>%

希望这只是我在做的一些愚蠢的事情! 提前致谢,

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    您可以为第一行中的每个ID 分配max(value)

    library(dplyr)
    
    df %>%
      group_by(ID) %>%
      mutate(max_value = ifelse(row_number() == 1, max(value), NA_integer_)) -> result
    
    result
    
    #      ID value max_value
    #   <int> <int>     <int>
    # 1     1    10        10
    # 2     1     2        NA
    # 3     1     3        NA
    # 4     1     4        NA
    # 5     2     1         3
    # 6     2     2        NA
    # 7     2     3        NA
    # 8     3     4         6
    # 9     3     5        NA
    #10     3     6        NA
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-21
      相关资源
      最近更新 更多