0

我正在尝试对以下数据(“长表”)运行关联模型:

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

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

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

(将一张票的所有警报组合成一行)

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

谢谢

4

2 回答 2

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  
于 2016-04-20T01:13:33.887 回答
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)
于 2016-04-19T01:23:29.400 回答