R中“长”表的关联规则

时间:2016-04-18 22:31:02

标签: r associations arules reformatting

我正在尝试在下面的数据(“长桌”)上运行关联模型:

Alarm         Ticket
A               T1  
B               T1
C               T1
D               T1
B               T2
C               T2
A               T3
A               T4
B               T4

但我认为“arules”包只能在“宽桌”上运行。 即。

Ticket  Alarm1 Alarm2 Alarm3 Alarm4
T1        A      B      C      D  
T2        B      C
T3        A

(将一张票的所有警报合并为一行)

那么有什么方法可以在长桌上运行关联分析,或者我必须进行“长到宽”的表重组格式?

由于

2 个答案:

答案 0 :(得分:0)

关联规则仅适用于二进制变量。

您可以使用model.matrix,但需要向其提供data.frame

类似的东西:

model.matrix( ~ alarm - 1, data = your_data)

应该创建一个合适的矩阵。

运行以下内容以查看其工作原理:

alarm <- rep(c("a","b","c"),2)
ticket <- rep(c("t1","t2"),3)

df <-data.frame(cbind(alarm,ticket))
df

model.matrix(data = df, ~alarm -1)

答案 1 :(得分:0)

我更喜欢这样的代码:

> df <- data.frame(
  Alarm = c("A", "B", "C", "D", "B", "C", "A", "A", "B"), 
  Ticket = c(rep("T1", 4), "T2", "T2", "T3", "T4", "T4")
)

> library("arules")
> trans <- as(split(df$Alarm, df$Ticket), "transactions")
> inspect(trans)
   items     transactionID
 1 {A,B,C,D} T1           
 2 {B,C}     T2           
 3 {A}       T3           
 4 {A,B}     T4