在R(StringR)中使用正则表达式提取用于购物篮分析的产品项目时出错 [英] Error extracting product items for Market Basket Analysis using regular expressions in R (StringR)
本文介绍了在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 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内置麦克风用于健身 |
请让我知道如何进行这项工作?
推荐答案
您不需要正则表达式。您只需使用strsplit
和unique
来查找唯一项目。
tran_pay4$newproduct = sapply(strsplit(tran_pay4$product_name, ", "),
function(x) paste(unique(x), collapse = ", "))
这篇关于在R(StringR)中使用正则表达式提取用于购物篮分析的产品项目时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文