我目前正在处理食堂数据集,并想分析这些篮子。但是,我有以下问题:
以下是我的数据摘录:
basket_id item_name item_id
2345 coke 0.5 98
2345 salad 300g 103
7876 water 88
7876 diet coke 95
7876 CANCEL diet coke 95
7876 sushi 143
3498 coffee 23
为了能够实际分析消费者所做的购买,我需要从数据集中删除所有取消。不幸的是,我不能删除包含" CANCEL"因为这会扭曲我的结果,因为我需要删除已取消的加上已取消的项目。例如篮子没有。 7876包含水,饮食可乐,CANCEL减肥可乐和寿司。但消费者最终只买了水和寿司。我需要的是一个识别取消和取消的项目的功能,并将其删除,以便我得到一个如下所示的数据集:
basket_id item_name item_id
2345 coke 0.5 98
2345 salad 300g 103
7876 water 88
7876 sushi 143
3498 coffee 23
因此实际的篮子7876仅包含消费者最终购买的物品。感谢您提供任何帮助或建议!
答案 0 :(得分:0)
让我们调用您的数据集data
。然后
library(data.table)
data <- data.table(
basket_id=c(2345,
2345,
7876,
7876,
7876,
7876,
3498 ), item_name=c("coke 0.5" ,
"salad 300g" ,
"water" ,
"diet coke" ,
"CANCEL diet coke",
"sushi" ,
"coffee" ), item_id=c(98,
103,
88,
95,
95,
143,
23)
)
dt <- as.data.table(data)
temp.basket <- dt[item_name%like%"^CANCEL",.(basket_id)]
temp.item <- dt[item_name%like%"^CANCEL",.(item_id)]
dt2 <- dt[!(basket_id%in%temp.basket &item_id%in%temp.item)]
符号^
确保item_name
以&CANCEL
开始