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

R语言使用dplyr包批量提取全门店qcc离群值的方法咨询

R语言结合dplyr+qcc批量提取多门店交易数据离群值方案

前置依赖

首先加载所需工具包:

library(dplyr)
library(qcc)

核心实现逻辑

通过dplyr的分组能力对每个门店单独执行你已验证的单门店计算逻辑,最终自动汇总所有门店的离群值结果。

代码实现

基础版(无容错,适用于数据质量较高、所有门店观测数均满足qcc计算要求的场景)

outlier_all <- 你的原始数据集名 %>%
  # 按门店维度分组
  group_by(store) %>%
  # 对每个分组独立执行离群值筛选
  group_modify(~ {
    # 计算当前门店的R控制图参数
    qcc_res <- qcc(.x$transaction, type = "R", plot = FALSE)
    # 提取上控制限
    ucl_val <- qcc_res$limits[, 2]
    # 筛选超出上控制限的交易记录
    filter(.x, transaction > ucl_val)
  }) %>%
  # 取消分组得到全量离群值汇总表
  ungroup()

增强容错版(适配10万门店量级的复杂数据场景,避免单个门店数据异常导致任务中断)

outlier_all <- 你的原始数据集名 %>%
  group_by(store) %>%
  group_modify(~ {
    # 前置校验:R控制图至少需要2条观测数据,数据量不足直接跳过当前门店
    if(nrow(.x) < 2) return(tibble())
    # 异常捕获:计算失败时跳过当前门店,不影响整体任务
    tryCatch({
      qcc_res <- qcc(.x$transaction, type = "R", plot = FALSE)
      ucl_val <- qcc_res$limits[, 2]
      filter(.x, transaction > ucl_val)
    }, error = function(e) return(tibble()))
  }) %>%
  ungroup()

结果说明

最终得到的outlier_all数据框即为所有门店的离群交易记录汇总,保留monthx、hourx、store、transaction所有原始字段。

可选优化项

  • 若需要按门店+月份维度分别计算控制限,只需将分组逻辑改为group_by(store, monthx)
  • 若需要留存每个门店的控制限参数,可在filter步骤前新增mutate(ucl = ucl_val, cl = qcc_res$center, lcl = qcc_res$limits[,1]),即可将控制限字段同步到结果中
  • 10万门店量级计算时,可提前将数据集按store字段排序,提升分组运算效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 13:42:02