2016-04-18 24 views
0

Ich versuche Assoziationsmodell auf unter Daten („langen Tisch“) auszuführen:Assoziationsregel auf „Long“ Tabelle in R

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

Aber ich denke, das „arules“ Paket kann nur auf laufen " breiter Tisch ". dh

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

(alle Alarme von einem Ticket in eine Reihe Combining)

So ist es eine Möglichkeit, die Assoziationsanalyse auf dem langen Tisch laufen kann oder ich habe die „lange zu breit zu tun "Tabelle umformatiert?

Dank

Antwort

0

Assoziationsregeln nur auf Binärgrößen arbeiten.

können Sie model.matrix verwenden, aber man braucht es eine data.frame

Etwas zu ernähren wie:

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

sollte eine geeignete Matrix erstellen.

Führen Sie die folgenden, um zu sehen, wie es funktioniert:

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) 
0

Ich würde Code wie folgt bevorzugen:

> 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