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

R语言使用dplyr按id、rank双分组取每组code最小值的实现方法

解决方法

你现有代码的问题有两点:

  • 仅设置了id作为分组维度,未添加rank作为分组字段
  • filter()的筛选条件错误,你需要匹配的是分组内code的最小值,而非id的最小值

正确实现代码如下:

library(dplyr)
DF <- data.frame(id=c(1,1,1,1,2),rank=c("1","1","2","3","1"),code=c("0","1","1","0","0"))
DF %>%
  group_by(id, rank) %>% # 同时按id、rank两个字段分组
  filter(code == min(code)) %>%
  ungroup() # 不需要保留分组结构时可添加该行,方便后续数据处理

运行后输出结果和你预期一致:

id rank code
1  1    1    0
2  1    2    1
3  1    3    0
4  2    1    0

如果存在同一分组下多个code并列最小值的场景,你也可以用slice_min()控制返回行数:

DF %>%
  group_by(id, rank) %>%
  # with_ties = FALSE 表示并列时仅返回第一行,需要返回所有并列行改为TRUE即可
  slice_min(code, n = 1, with_ties = FALSE) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:18:04