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

R语言基于两列去重、保留第三列最大值行且保留所有列的方法

原因说明

你之前代码丢失x1列是因为summarise()函数的特性:该函数执行后仅会保留分组所用的列(x2、x3)以及你主动声明做聚合计算的列(此处的x4),其余列会被自动丢弃。要保留所有列可以用以下两种修改方案:


方案1:使用slice_max()(推荐,适配dplyr 1.0.0及以上版本)

这个函数可以直接按指定列提取每组最大值对应的完整行:

result <- df %>%
  group_by(x2, x3) %>%
  slice_max(x4, n = 1) %>%
  ungroup()

如果同组内有多行x4同时为最大值,该写法默认会返回所有符合条件的行;如果仅需要保留任意1行,可添加with_ties = FALSE参数:

slice_max(x4, n = 1, with_ties = FALSE)

方案2:使用filter()(适配所有版本dplyr)

通过判断行的x4值是否等于分组内最大值来筛选行,也能保留所有列:

result <- df %>%
  group_by(x2, x3) %>%
  filter(x4 == max(x4)) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:15:03