如何为arules准备交易数据到篮子里

时间:2015-10-07 16:16:35

标签: r arules market-basket-analysis

好的,所以我搜索了很多,并希望在销售数据上运行arules。我只需要以正确的格式正确获取数据,并使用正确的“因子”或“变量”以篮子形式设置。

现在我有订单#的销售数据,然后是里面的项目。每个订单都是唯一的(每个新订单,新的#创建并包含部分#),但相同的项目显然可以出现在许多订单中。

目前,我的数据设置如下:

Order#    Part#   PartDescription
1         A       PartA
1         B       PartB
1         G       PartG
2         R       PartR
3         A       PartA
3         B       PartB
4         E       PartE
5         Y       PartY
6         A       PartA
6         B       PartB
6         F       PartF
6         V       PartV

所以,R不喜欢这种形式,我必须以arules和数据分析可以接受的形式得到它。

是的我将它保存为文本文件,并尝试过.csv文件,但如果我可以逐步说明如何准备它或在RStudio中操作它会很棒。

我读到它假设是一种篮子形式,如..

1(A,B,G)
2(R)
3(A,B)
4(E)
5(Y)
6(A,B,F,V)

如果不准确,请纠正我。我明白了这个想法,但我只需要一步一步的指示,这些指示似乎无处可寻。我尝试过使用dplyr和tidyr。我对数据分析有很好的理解,但需要更多关于RStudio的直接帮助,所以如果我可以一步一步地逐步理解这一点。

2 个答案:

答案 0 :(得分:7)

查看"交易"的帮助页面。有关如何获取数据的示例的数据类型:

library(arules)
?transactions

对于您的类型,您希望按订单split,然后使用as将其放入交易列表中:

trans <- as(split(data[,"Part"], data[,"Order"]), "transactions")
inspect(trans)
  items     transactionID
1 {A,B,G}   1            
2 {R}       2            
3 {A,B}     3            
4 {E}       4            
5 {Y}       5            
6 {A,B,F,V} 6   

答案 1 :(得分:1)

我在强制方面遇到了很多麻烦(例如'as(dataname,“transactions”......)。

我认为这是因为我有重复的记录(即,当数据采用'单一'格式时,在同一个转换中购买的同一项目不止一次)。

这最终对我有用:

Transactions<- read.transactions("Data with tx ids, item names, in
                      single format.csv", 
                      rm.duplicates= TRUE, sep=",",
                      format = "single", cols = c(7,9));

(第7列中的tx id,第9列中的项目名称)