在R(StringR)中使用正则表达式提取用于购物篮分析的产品项目时出错 [英] Error extracting product items for Market Basket Analysis using regular expressions in R (StringR)

查看:0
本文介绍了在R(StringR)中使用正则表达式提取用于购物篮分析的产品项目时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Order_id PRODUCT_NAME
1 普通-高附着力有机硅底漆-30ml,普通-天然保湿因子+HA 30ml
2 Sandal,Brown-44
3 醋酸盐正方形黑色过渡太阳镜,卡地亚-8221-边少绿色双色太阳镜,雷朋-飞行员-棕色双色-3026-钻石硬质坚硬镜片,Burberry-2A357-哈瓦那-飞行员-太阳镜,醋酸盐正方形-黑色-过渡性太阳镜,卡地亚-8221-边少绿色双色太阳镜,雷朋-飞行员-棕色双色-3026钻石硬质镜片,Burberry-2A357-哈瓦那-飞行员-太阳镜
4 NasGas即喷泉DG6L、NasGas即喷泉DG6L、NasGas即喷泉DG6L
5 Mpow Flame Solo蓝牙耳塞,强力低音IPX7防水耳机无线耳机蓝牙耳机,USB-CFAST充电BT5.028H跑步内置麦克风,Mpow Flame Solo蓝牙耳塞,强力低音IPX7防水蓝牙耳机蓝牙耳机,USB-CFAST充电BT5.028H跑步内置麦克风
上面是数据集中的产品项目示例集。这就是项目在整个数据库中的存储方式。

考虑订单ID 3: 第一件是醋酸盐。第二件卡地亚。第三个巴宝莉...在此之后,这些项目只重复两次,在某些项目(订单ID为4)的情况下,重复三次。我需要删除这种重复。在本例中,分隔符是逗号。

其次:

考虑订单ID 4:在这里我不能用逗号分隔项目,因为第一个产品项目在工作中结束,并且在一个产品项目说明中有逗号

我之前使用了以下代码

data.frame(tran_pay4) %>%
  mutate(product_name = str_extract_all(product_name, "((?!\s)[^,]+)(?!.*\1)"))
这可以解决大多数购物车问题,但不能解决case::order_id=5的问题 目标是保留单个产品项目。

输出应如下所示:

Order_id PRODUCT_NAME
1 普通-高附着力有机硅底漆-30ml,普通-天然保湿因子+HA 30ml
2 Sandal,Brown-44
3 醋酸正方形-黑色-过渡-太阳镜,卡地亚-8221-边缘少绿双色太阳镜,雷朋-飞行员-棕色双色-3026-钻石坚硬镜片,Burberry-2A357-哈瓦那-飞行员-太阳镜
4 NasGas即时喷泉DG6L
5 Mpow Flame Solo蓝牙耳塞劲爆低音IPX7防水耳机无线耳机蓝牙耳机USB-CFAST充电BT5.028H Playtime内置麦克风用于健身

请让我知道如何进行这项工作?

推荐答案

您不需要正则表达式。您只需使用strsplitunique来查找唯一项目。

tran_pay4$newproduct = sapply(strsplit(tran_pay4$product_name, ", "), 
                              function(x) paste(unique(x), collapse = ", "))

这篇关于在R(StringR)中使用正则表达式提取用于购物篮分析的产品项目时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆