我希望这个问题很容易回答。我有一些数据,我想找到一个组的最大值,但是我的输出有问题。
假数据:
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