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

R语言多规则分组下识别relabs列异常值并剔除的实现方法

R语言多规则分组异常值识别与剔除实现方案

实现思路

  • 构造符合差异化规则的统一分组标识,将两种分组逻辑合并为单一的分组键,无需拆分数据集再合并,降低出错概率
  • 基于自定义分组键完成异常值识别,后续剔除逻辑和原有流程完全兼容

完整代码实现

# 加载依赖包
library(dplyr)
library(rstatix)

# 1. 构造自定义分组辅助列
df_process <- 原始数据集 %>%
  mutate(
    group_key = case_when(
      # NK组额外拼接Control列作为分组标识
      conc == "NK" ~ paste(Treatment, conc, Control, sep = "_"),
      # 非NK组沿用原Treatment+conc分组逻辑
      TRUE ~ paste(Treatment, conc, sep = "_")
    )
  )

# 2. 按自定义分组识别relabs列异常值
outliers <- df_process %>%
  group_by(group_key) %>%
  identify_outliers(relabs)

# 3. 按ID匹配剔除异常值
df_clean <- df_process %>%
  anti_join(outliers, by = "ID") %>%
  # 可选:删除临时生成的分组辅助列,不影响原始数据结构
  select(-group_key)

逻辑说明

  • 用case_when实现分组规则的差异化处理:非NK组沿用原来的Treatment+conc分组逻辑,NK组额外拼接Control列的取值作为分组标识,保证Control=1和Control=2的NK组数据完全分开统计
  • 异常值识别、剔除逻辑和原有实现完全兼容,不需要调整其他业务逻辑

注意事项

  • 如果数据集没有提前生成每行唯一的ID列,可在处理前执行df <- df %>% mutate(ID = row_number())生成唯一标识
  • identify_outliers默认使用1.5倍IQR规则识别异常值,如果需要使用Z值规则,可添加参数method = "zscore自行调整阈值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:39:00