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

如何在R中按子类别校验Brand总和与Total值并返回不达标项

问题解决方案

核心思路

按Sub_Category分组后,分别计算每组内Brand_Type="Brand"的Value总和,提取同组内Brand_Type="Total"的Value值,再对比两者大小完成校验。

示例代码(基于dplyr)

首先假设你的数据集结构如下(替换为你的实际数据即可):

# 示例数据集
sample_data <- structure(list(Year = c(2023, 2023, 2023, 2023, 2023),
                              Category = c("Electronics", "Electronics", "Electronics", "Clothing", "Clothing"),
                              Sub_Category = c("Phones", "Phones", "Phones", "Shirts", "Shirts"),
                              Segment = c("Retail", "Retail", "Retail", "Wholesale", "Wholesale"),
                              Brand_Type = c("Brand", "Brand", "Total", "Brand", "Total"),
                              Value = c(100, 200, 350, 150, 140)),
                         class = "data.frame", row.names = c(NA, -5L))

执行校验的代码:

library(dplyr)

# 生成含校验结果的完整表格
validation_result <- sample_data %>%
  group_by(Sub_Category) %>%
  summarise(
    total_brand_value = sum(Value[Brand_Type == "Brand"], na.rm = TRUE),
    # 若每组有多个Total记录,将unique改为sum即可
    total_category_value = unique(Value[Brand_Type == "Total"]),
    check_pass = total_brand_value < total_category_value
  ) %>%
  ungroup()

# 查看全部校验结果
print(validation_result)

# 仅提取不满足条件的分组
failed_groups <- validation_result %>% filter(!check_pass)
print(failed_groups)

代码说明

  • group_by(Sub_Category):指定按子类别分组计算
  • sum(Value[Brand_Type == "Brand"], na.rm = TRUE):在每组内筛选Brand_Type="Brand"的记录,求和其Value,na.rm=TRUE处理缺失值
  • unique(Value[Brand_Type == "Total"]):提取每组内Brand_Type="Total"的Value,若同组存在多条Total记录,替换为sum(Value[Brand_Type == "Total"], na.rm = TRUE)即可
  • check_pass:生成布尔值标记校验是否通过
  • 最后可选择输出完整校验表,或仅筛选未通过的分组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:40:32