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

R语言如何提取文本行核心品牌字段并分组汇总采购量

R 按核心品牌分组统计采购量实现方案

通过「文本清洗提取核心品牌名+分组聚合」两步即可实现需求,以下给出两种可直接运行的常用实现方式:

方法1:tidyverse 方案(日常数据处理首选)

适合已经在用dplyr做数据处理的场景,代码可读性高:

library(dplyr)
library(stringr)

# 构造示例原始数据集
df <- data.frame(
  brand = c("Bakoma Bio", "Bakoma Non Bio", "Dorritos Bio", "Dorritos Non Bio"),
  purchase_qty = c(2, 1, 2, 3)
)

# 清洗品牌名并分组求和
stat_result <- df %>%
  mutate(
    # 正则匹配字符串末尾的" Bio"或" Non Bio"后缀,替换为空得到核心品牌名
    core_brand = str_remove(brand, "\\s(Non\\s)?Bio$")
  ) %>%
  group_by(core_brand) %>%
  summarise(total_purchase = sum(purchase_qty), .groups = "drop")

运行后stat_result的输出完全符合预期:

core_brand total_purchase
1     Bakoma              3
2   Dorritos              5

方法2:Base R 方案(无需安装额外依赖)

不想加载第三方包时可以直接用R原生函数实现,逻辑完全一致:

# 构造示例数据集
df <- data.frame(
  brand = c("Bakoma Bio", "Bakoma Non Bio", "Dorritos Bio", "Dorritos Non Bio"),
  purchase_qty = c(2, 1, 2, 3)
)

# 清洗提取核心品牌名
df$core_brand <- sub("\\s(Non\\s)?Bio$", "", df$brand)
# 按核心品牌分组求和
stat_result <- aggregate(purchase_qty ~ core_brand, data = df, FUN = sum)

关键注意事项

  • 正则规则必须加末尾匹配符$:保证只删除字符串末尾的后缀,不会误删品牌名本身带有的Bio相关字符,比如品牌名Biopharm不会被错误截断。
  • 如果数据里后缀存在大小写混乱(比如bio、NON BIO),可以给正则加忽略大小写参数:tidyverse版本写法为str_remove(brand, regex("\\s(Non\\s)?Bio$", ignore_case = TRUE)),base R版本可以在sub函数里加ignore.case = TRUE参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:57:20