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

Stringr模式匹配:如何修改代码实现重复商品描述的去重处理?

解决方案

核心思路

放弃按长度截断的固定规则,改用「分割-去重-拼接」的通用逻辑,适配所有重复场景:

  • 先将每条商品描述按, 分割为独立的商品名称数组
  • 对数组去重,保留每个唯一商品的单个实例
  • 最后将去重后的数组重新拼接为字符串

完整实现代码

首先加载需要的依赖包(首次使用可先执行安装命令):

# 安装依赖(仅首次运行需要)
install.packages("tidyverse")
# 加载工具包
library(tidyverse)

处理数据的核心代码:

df_new <- df %>%
  mutate(
    new_items = map_chr(
      .x = str_split(Product_name, pattern = ", "), # 按分隔符拆分每个商品字符串
      .f = ~ str_c(unique(.x), collapse = ", ") # 去重后重新拼接
    )
  )

可选优化:处理拼写不一致问题

你提供的测试数据中存在同一款商品拼写不一致的情况(比如samsung A02s (3+32)和samsung A02s(3+32)差了一个空格),可以在去重前先做标准化处理,避免同品不同名的问题:

df_new <- df %>%
  mutate(
    new_items = map_chr(
      .x = str_split(Product_name, pattern = ", "),
      .f = ~ {
        # 生成标准化名称用于去重匹配,保留原始名称输出
        unique_name <- .x[!duplicated(str_remove_all(tolower(.x), "\\s+"))]
        str_c(unique_name, collapse = ", ")
      }
    )
  )

处理效果

用你提供的测试数据执行后,new_items列输出如下:

  • Samsung Galaxy A03s (4+64)
  • Samsung Galaxy A03s (3+32)
  • Samsung A32 (6+128)
  • samsung A02s (3+32)(开启标准化后会自动合并同品不同名的条目)
  • Xiaomi Redmi 10 (6+128)
  • Redmi Note 10 Pro (6+128)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:06:04