set.seed(2024)
df <- data.frame(x1=rep(c(1:4),each=12), x2=rep(c("A","B","C"),each=4,times=4), y=runif(48), z=rep(c(12,4,19,8,58,2,33,32,25,70,5,25),each=4))
我正在try 为z
中具有最高值的所有唯一字母 Select 行.
在我的例子中,A
是行:
37 4 A 0.0541251726 70
38 4 A 0.9661198864 70
39 4 A 0.0221378489 70
40 4 A 0.6473674888 70
B
人:
17 2 B 0.1103110805 58
18 2 B 0.8632152062 58
19 2 B 0.1310691827 58
20 2 B 0.2954267922 58
对于C
,当为x1==3
和x1==4
时,z
的最大值为25,因此 Select x1
中值最低的行:
33 3 C 0.1762014020 25
34 3 C 0.9733794478 25
35 3 C 0.6751627198 25
36 3 C 0.6809547509 25
总而言之,这就是预期结果:
x1 x2 y z
37 4 A 0.0541251726 70
38 4 A 0.9661198864 70
39 4 A 0.0221378489 70
40 4 A 0.6473674888 70
17 2 B 0.1103110805 58
18 2 B 0.8632152062 58
19 2 B 0.1310691827 58
20 2 B 0.2954267922 58
33 3 C 0.1762014020 25
34 3 C 0.9733794478 25
35 3 C 0.6751627198 25
36 3 C 0.6809547509 25
这几乎可以完成任务:
library(dplyr)
df %>% group_by(x2) %>% slice(which.max(z))
但我需要 Select 属于同一x1
的所有其他行.