You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中如何按分类变量提取某列最大值对应的行

按分组提取最大值对应的所有行

假设我们有如下数据框:

df <- data.frame(a = c("A","A","A","B","B","C","C","C"),
                 b= c(1,2,2,2,3,2,3,3))

需要按列a的每个分类,提取列b中最大值对应的所有行,最终得到如下结果:

df1 <- data.frame(a = c("A","A","B","C","C"),
                 b= c(2,2,3,3,3))

方法一:Base R 实现

无需额外安装包,直接用基础R代码即可完成:

# 计算每个a分组对应的b的最大值
group_max <- tapply(df$b, df$a, max)
# 筛选出b等于对应分组最大值的行
df1 <- df[df$b == group_max[df$a], ]
# 重置行名(可选,让结果更整洁)
rownames(df1) <- NULL

方法二:dplyr 包实现

如果习惯使用tidyverse生态的代码风格,推荐用dplyr处理:

# 先加载dplyr包(首次使用需先安装:install.packages("dplyr"))
library(dplyr)

df1 <- df %>%
  group_by(a) %>%
  filter(b == max(b)) %>%
  ungroup()
# 若需要将结果转为普通data.frame而非tibble,可添加:
# df1 <- as.data.frame(df1)

内容的提问来源于stack exchange,提问作者starski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 18:12:14