r - R 中 arules 的序列事务类

标签 r data-mining rules sequences arules

尝试在 R 中使用 arulesSequences 包。遇到这个问题,我看到很多人都遇到过,但没有好的答案:从数据帧或矩阵到事务数据类型。

正如文档明确指出的那样,我已经为 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

我一直在努力克服这个简单的障碍:

  1. 更改拆分顺序
  2. 把一切都变成因素
  3. 将所有内容都改为矩阵
  4. 像这样直接将数据帧输入 arules 函数
  5. 导出为 .txt,导入为 read.transactions
  6. 导出为 .txt,导入为“篮子”
  7. 尝试“解决方案”:here , here ,和here (read_baskets 是一个函数?)

所有错误要么是上述错误,要么当我没有收到任何错误时,我得到一个具有两列的事务对象,当然 arulesSequences 无法读取该对象,因为它需要三列:1 ) 序列 ID、事件 ID、项目。

我认为我的数据库结构再清晰不过了。序列是“客户编号”,事件 ID 是购买编号和元素,嗯,元素。

请提供任何帮助,包括“as()”想要看到的结构,以便它正确执行强制。

最佳答案

试试这个:

trans4 <- as(a_df3[,"item"], "transactions")
trans4@itemsetInfo$sequnceID = a_df3$SEQUENCEID
trans4@itemsetInfo$eventID = a_df3$EVENTID

transSeq = as(trans4, "timedsequences")

关于r - R 中 arules 的序列事务类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28685422/

相关文章:

用于根据不均匀日期创建不均匀组的 R 函数

r - 如何在R中逐行写入文件

r - 如何从r中数据帧内的列表中提取数字信息?

f# - 使用FORTRAN或C(或托管代码)的数据挖掘模型?

sql - 在数据资源管理器中查询增长最快的标签?

linux - udev .rules 文件以每个用户的本地身份运行?

r - 如何使用 gsub() 准确替换字符串

java - weka的可视化选项卡中的抖动是什么意思

java - 流口水规则流程

database - psycopg2.NotSupportedError : INSERT with ON CONFLICT clause cannot be used with table that has INSERT or UPDATE rules