我有一个数据框,其中包含变量的组 (Gp) 和值 (y)。
我的数据
y <- c(5 , 0.22 , 0.23 , 0.17 , 0.36 , 3.33 , 5.30 , 0.39 , 0.35 ,
0.27 , 0.20 , 0.22 , 0.24 , 0.16 , 0.36 , 0.30 , 0.31 , 0.39 , 0.33 , 0.25 , 0.23 , 0.13 , 0.16 , 6.18 , 0.20 ,1, 9.15 , 0.09 , 0.18 , 8 , 9 , 0.14 , 3 , 0.18 , 0.22 , 0.16 , 0.14 , 0.11 , 0.18 , 4 , 0.30 ,
0.36 , 0.40 , 0.42 , 8 , 0.23 , 0.25 , 0.30 , 0.27 , 0.15 , 0.29 , 0.36 , 0.38 , 0.42 , 0.28 , 0.23 , 0.26 , 0.29 , 0.24 , 0.17 , 0.24 , 0.14 , 0.17 , 0.16 , 0.15 , 6 , 0.19 , 0.15 , 0.16 , 0.3)
Gp <- c(1,2,2,1,2,1,2,2,2,2,3,2,1,2,2,2,2,2,2,2,1,2,2,2,2,1,3,2,2,1,2,2,3,2,
2,2,2,1,2,3,1,2,2,1,2,2,2,2,3,2,2,1,2,3,2,2,3,2,2,2,3,2,2,2,3,2,2,2,2,3)
tab <- data.frame(x=as.factor(Gp), y)
tab
x y
1 1 5.00
2 2 0.22
3 2 0.23
4 1 0.17
5 2 0.36
我想根据组获得最大变量的标识符。我尝试过:
with(tab,tapply(y,x,max))
1 2 3
8.00 9.00 9.15
预期结果:
30 31 27
1 2 3
8.00 9.00 9.15
其中 30 、 31 和 27 是最大值的标识符。
最佳答案
这是一个关于dplyr
的想法,
library(dplyr)
tab %>%
mutate(index = row_number()) %>%
group_by(x) %>%
filter(y == max(y))
这给出了,
# A tibble: 3 x 3 # Groups: x [3] x y index <fct> <dbl> <int> 1 3 9.15 27 2 1 8.00 30 3 2 9.00 31
关于r - 根据组的最大变量的标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49920578/