尝试arulesSequences
在 R 中使用包。遇到这个问题我看到很多人遇到但没有好的答案:从数据框或矩阵到事务数据类型。
正如文档明确指出的那样,我已经为 arules 做到了这一点:
a_df3 <- data.frame(TID = c(1,1,2,2,2,3), item=c("a","b","a","b","c", "b"))
a_df3
trans4 <- as(split(a_df3[,"item"], a_df3[,"TID"]), "transactions")
工作正常。但是,如果我尝试对 3 列数据框做同样的事情,一切都会变得混乱:
a_df4<-data.frame(SEQUENCEID=c("1","1","1","2","2","3","3"),
EVENTID=c("1","2","3","1","2","1","2"),
ITEM=c("a","b","a","c","a","a","b"))
a_df4
SEQUENCEID EVENTID ITEM
1 1 1 a
2 1 2 b
3 1 3 a
4 2 1 c
5 2 2 a
6 3 1 a
7 3 2 b
是的,有重复,但这正是重点,不是吗?(寻找频繁的序列集)。
所以,现在我像这样强制:
seqt<-as(split(myseq[,"ITEM"],myseq[,"SEQUENCEID"],myseq[,"EVENTID"]),"transactions")
我得到:
Error in asMethod(object) :
can not coerce list with transactions with duplicated items
我一直在试图通过这个简单的障碍:
- 更改拆分顺序
- 把一切都变成因素
- 把一切都变成矩阵
- 像这样直接将数据框输入到 arules 函数中
- 导出为 .txt,导入为 read.transactions
- 导出为 .txt,作为“篮子”导入
- 尝试“解决方案”:here、here和here(read_baskets 是一个函数?)
所有错误都是上述错误,或者当我没有得到任何错误时,我得到一个包含两列的事务对象,因为它需要三列,所以当然无法读取arulesSequences
:1) SEQUENCE-ID、EVENT-ID、ITEMS。
我认为我的数据库结构再清晰不过了。序列是“客户编号”,事件 ID 是购买编号和商品,嗯,商品。
请感谢任何帮助,包括“as()”希望看到的结构,以便它正确执行强制。