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

如何用tidyverse移除指定分组(V1=2、V1=5)的V2最大值行

问题描述

现有如下两列DataFrame:

V1   V2
1    10
1    56
1    72
1    37
2    59
2    29
2    105
2    93    
3    53
3    40
3    84
3     3
4    62
4    34
4    18
4    42
5    38
5    92
5    79
5    25

需要使用tidyverse工具移除分组V1=2和V1=5中各自对应V2最大值所在的行,期望得到如下输出:

V1   V2
1    10
1    56
1    72
1    37
2    59
2    29
2    93
3    53
3    40
3    84
3     3
4    62
4    34
4    18
4    42
5    38
5    79
5    25

生成该DataFrame的代码如下:

df = data.frame(V1= rep(1:5, each=4), V2 = sample(1:100,20))
解决方案

使用tidyverse中的dplyr包即可实现需求,核心逻辑是按V1分组后,仅对指定分组过滤掉V2最大值对应的行:

library(tidyverse)

df %>%
  group_by(V1) %>%
  filter(!(V1 %in% c(2,5) & V2 == max(V2))) %>%
  ungroup()

代码说明

  • group_by(V1):按V1字段进行分组
  • filter(!(V1 %in% c(2,5) & V2 == max(V2))):设置过滤规则——仅当V1为2或5,且该行V2等于该组最大值时移除该行,其余情况保留所有行
  • ungroup():取消分组,恢复为普通DataFrame结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:25:40