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==3x1==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的所有其他行.

推荐答案

根据您的 comments ,这里有答案.看起来您明确想要一个{dplyr}的解决方案.因此,使用filter()的一个选项:

df |> 
  dplyr::group_by(x2) |> 
  dplyr::filter(z == max(z)) |> 
  dplyr::filter(x1 == min(x1)) |> 
  dplyr::arrange(x2)

如果有人引用了欺骗,我会删除它.非常肯定至少有一个;还没找到.

R相关问答推荐

使用R中的小鼠()进行插补后观察次数显着变化

使用gsim删除特殊词

无法运行通过R中的Auto.arima获得的ARIMA模型

具有多个依赖变量/LHS的逻辑模型

R等效于LABpascal(n,1)不同的列符号

无法将传奇添加到cowplot多情节中

咕噜中的元素列表:map

将向量组合到一个数据集中,并相应地命名行

使用geom_segment()对y轴排序

标识R中多个列中缺少的唯一值

从外部文件读取多个值作为字符向量

使用R中的正则表达式将一列分割为多列

线性模型斜率在减少原始数据时提供NA

Data.table';S GForce-将多个函数应用于多列(带可选参数)

将向量元素重新排序为R中的第二个

我如何go 掉盒子图底部的数字?

如何计算每12行的平均数?

删除字符串R中的重复项

删除在R中的write.table()函数期间创建的附加行

在不重复主题的情况下重新排列组