2016-05-24 5 views
2

Ich verwende derzeit das Arules-Paket, um eine Warenkorbanalyse durchzuführen. Meine Daten, die ich gelesen sieht in so (aber mit viel mehr Zeilen):Warenkorb-Analyse mit doppelten Artikeln in R mit Arules

>data 
    transaction_id item 
1    1 beer 
2    1 beer 
3    1 soda 
4    2 beer 
5    3 beer 
6    3 fries 
7    3 candy 
8    4 soda 
9    4 fries 

ich es dann verwandeln mit dcast und entfernen Sie die Transaktions-ID-Säule:

> Trans_Table <- dcast(data, transaction_id ~ item) 
> Trans_Table$transaction_id <- NULL 

und es sieht wie folgt aus:

beer candy fries soda 
1 2  0  0 1 
2 1  0  0 0 
3 1  1  1 0 
4 0  0  1 1 

aber dann, wenn ich es in die „Transaktionen“ Klasse machen, damit ich die A-priori-Funktion verwenden, wandelt er die 2 unter Bier zu einem 1

> Transactions <- as(as.matrix(Trans_Table), "transactions") 
Warning message: 
In asMethod(object) : 
    matrix contains values other than 0 and 1! Setting all entries != 0 to 1. 

Gibt es eine Möglichkeit, die Warenkorbanalyse durchzuführen und diese 2 aufrechtzuerhalten? Mit anderen Worten, ich würde gerne Regeln für {Bier} => {Bier}, {Bier, Bier} => {Soda} und {Bier, Soda} => {Bier} sehen, aber es zählt derzeit nur einmal Bier pro Transaktion, auch wenn es zweimal gekauft wurde.

Kann mir jemand dabei helfen?

Antwort

2

Die Warenkorbanalyse bezieht sich auf verschiedene Artikel, die zusammen gekauft werden, und nicht auf die Häufigkeit eines bestimmten Artikels. Wenn Sie jedoch dasselbe Element wirklich so behandeln möchten, als wäre es eindeutig, können Sie möglicherweise den folgenden Ansatz verwenden, um neue Elementnamen zu generieren.

Mit Bibliothek dplyr, können Sie den Namen des Elements mutieren durch die der ID-mal angehängt werden sie auftritt, und verwenden Sie diese in Ihrer arules Verarbeitung:

library(dplyr) 
df <- df %>% 
     group_by(transaction_id, item) %>% 
     mutate(newitem = paste(item, row_number(), sep = '')) 
as.matrix(table(df$transaction_id, df$newitem)) 

Ausgang ist:

beer1 beer2 candy1 fries1 soda1 
    1  1  1  0  0  1 
    2  1  0  0  0  0 
    3  1  0  1  1  0 
    4  0  0  0  1  1 

Es gibt mehrere Möglichkeiten, die Ausgabe an den spezifischen Format-Stil anzupassen.

Verwandte Themen