R中篮子分析的准备数据集

时间:2017-04-28 09:25:01

标签: r analysis market-basket-analysis

我目前正在处理食堂数据集,并想分析这些篮子。但是,我有以下问题:

以下是我的数据摘录:

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仅包含消费者最终购买的物品。感谢您提供任何帮助或建议!

1 个答案:

答案 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开始