Правило ассоциации на "Длинном" столе в R

Я пытаюсь запустить модель ассоциации на данных ниже ("длинная таблица"):

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 ответа

Я бы предпочел такой код:

> 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  

Правила ассоциации работают только с двоичными переменными.

Вы можете использовать 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)
Другие вопросы по тегам