选择跨组的最大值- R/Dplyr解决方案



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

假数据:

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)) %>%

希望这只是我做的蠢事!提前感谢,

您可以为第一行中的每个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

最新更新