如何使用R语言查找对应最大points值的id
找到对应最大points值的id的简洁R实现
嘿,这是个很实用的小需求,我给你几个简洁的R代码方案,轻松搞定这个问题~
首先先还原你的示例数据:
df <- data.frame(id=c(2,3,6,8,12,34,27), points=c(2,3,5,9,19,2,3))
方法1:基础R极简写法(适合唯一最大值场景)
df$id[which.max(df$points)]
which.max()会直接返回points列中最大值所在的位置索引,用这个索引提取对应的id,一行代码搞定,完全匹配你示例里的情况,运行结果就是12。
方法2:通用写法(支持多个相同最大值)
如果你的数据里可能存在多个相同的最大points值,这个写法能返回所有对应的id:
df$id[df$points == max(df$points)]
比如要是有两个行的points都是19,这个代码会把这两个行的id都返回,适用性更广。
方法3:tidyverse风格写法(可读性强)
如果你习惯用dplyr这类tidyverse工具,管道写法会更直观:
library(dplyr) df %>% filter(points == max(points)) %>% pull(id)
先筛选出points等于最大值的行,再提取id列,逻辑清晰,看代码就知道在做什么。
根据你给出的示例,方法1是最简洁高效的选择~
内容的提问来源于stack exchange,提问作者Bae
相关产品推荐
相关产品推荐

