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

基于另一因子分组的列值范围,移除tibble不符合条件的行

数据过滤解决方案

步骤1:计算基准范围

先提取v3为"b"的行,计算v1和v2的最小、最大值,作为过滤基准:

library(dplyr)

# 计算v3="b"时v1、v2的极值范围
b_ranges <- df %>%
  filter(v3 == "b") %>%
  summarise(
    v1_min = min(v1),
    v1_max = max(v1),
    v2_min = min(v2),
    v2_max = max(v2)
  )

步骤2:执行过滤

基于上述范围,保留v3="b"的所有行,以及v3="a"中v1、v2均未超出对应基准范围的行:

filtered_df <- df %>%
  filter(
    v3 == "b" |
    (v3 == "a" & 
     between(v1, b_ranges$v1_min, b_ranges$v1_max) & 
     between(v2, b_ranges$v2_min, b_ranges$v2_max))
  )

验证结果

运行后得到的filtered_df与预期一致:

# 输出结果
filtered_df
#> # A tibble: 9 × 3
#>      v1    v2 v3   
#>   <dbl> <dbl> <fct>
#> 1     5     1 a    
#> 2     7     1 a    
#> 3     4     1 a    
#> 4     3     1 b    
#> 5     4     4 b    
#> 6     5     5 b    
#> 7     6     6 b    
#> 8     6     6 b    
#> 9     7     7 b

逻辑说明

  • 对于v3="b"的行,全部保留;
  • 对于v3="a"的行,仅保留v1在b组v1的min-max区间且v2在b组v2的min-max区间的行,其余不符合条件的a组行被移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 21:37:34