0

我目前正在使用食品大厅数据集,并想分析篮子。但是,我有以下问题:

这是我的数据的摘录:

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

4

1 回答 1

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

于 2017-04-28T09:39:17.247 回答