2016-04-06 12 views
1

Ich habe Verkaufsdaten, dh Informationen darüber, welche Artikel Verbraucher gekauft haben. Ich müsste es in Transaktionsdaten für die Affinitätsanalyse umwandeln.Umwandlung von Daten in einer Spalte zu Transaktionen in R

Daten ist wie folgt:

ID=c("A123","A123","A123","A123","B456","B456","B456") 
item=c("bread", "butter", "milk", "eggs", "meat","milk", "peas") 

data.frame(cbind(ID, item)) 
    ID item 
1 A123 bread 
2 A123 butter 
3 A123 milk 
4 A123 eggs 
5 B456 meat 
6 B456 milk 
7 B456 peas 

Aber wie konnte ich es in dieser Form erhalten ?:

ID basket 
A123 bread,butter,milk,eggs 
B456 meat,milk,peas 
+0

Übrigens sollten Sie 'dat.frame (cbind (x))' vermeiden, da es alle Spalten als Zeichen setzt. Lass mich wissen, ob es einen Grund gibt, dein q nicht als Duplikat zu schließen. – Frank

+2

Ich denke, das ist das Duplikat: http://stackoverflow.com/questions/17313450/how-to-convert-data-frame-to-transactions-for-arules, aber es gab mir einen Fehler: Fehler in as (split (df2 [, 2], df2 [, 1]), "transactions"): keine Methode oder Standard für "Listen" zu "Transaktionen" zu erzwingen Allerdings ist der Fehler nicht, dass es eine Liste ist, sondern die Tatsache, dass ich hatte Arules nicht geladen. lukeA hat mein Problem gelöst – ElinaJ

Antwort

4

Je nachdem, was Sie tun möchten, vielleicht

library(arules) 
(trans <- as(split(df$item, df$ID), "transactions")) 
# transactions in sparse format with 
# 2 transactions (rows) and 
# 6 items (columns) 
inspect(trans) 
# items     transactionID 
# 1 {bread,butter,eggs,milk} A123   
# 2 {meat,milk,peas}   B456 

oder

aggregate(item~ID, df, paste, collapse=",") 
#  ID     item 
# 1 A123 bread,butter,milk,eggs 
# 2 B456   meat,milk,peas 
Verwandte Themen