2016-04-27 8 views
0

Wie bereite ich die Daten in Form von "Transaktionen" vor, aber für jede Transaktions-ID wird der zeitliche Effekt/Reihenfolge berücksichtigt? Ich habe festgestellt, dass die "Split" -Funktion in alphabetischer Reihenfolge erfolgt.Arules-Paket - Daten vorbereiten

zB:

ID Items Sequence 
1 D  1 
1 A  2 
1 C  3 
2 A  1 
2 B  2 

gewünschte Ausgabe in Transaktionen:

ID Items 
1 D A C#notice that A comes after D as it is dictacted by sequence variable 
     #              here for the order 
2 A B 

Grüße.

+0

ich etwas fehle, oder Sie haben vergessen, auch C zum gewünschten Ausgang hinzuzufügen? –

+0

Danke für die Köpfe hoch. Bearbeitet. – skw1990

+0

Sollte nicht die letzte Zeile der Eingabe "Daten" stattdessen "2 B 2" sein? – OdeToMyFiddle

Antwort

0

lapply und rbind verwenden,

DF = read.table(text="ID Items Sequence 
1 D  1 
1 A  2 
1 C  3 
2 A  1 
2 B  2",header=TRUE,stringsAsFactors=FALSE,na.strings="") 


DF 
# ID Items Sequence 
#1 1  D  1 
#2 1  A  2 
#3 1  C  3 
#4 2  A  1 
#5 2  B  2 

Für jede ID, die Datenrahmen Teilmenge, sortiert nach Sequenz, kombinieren die Elemente und das Rück ouput für jede ID

DF_new = do.call(rbind,lapply(unique(DF$ID),function(x) { 

subset_DF = DF[DF$ID==x,]; 
subset_DF = subset_DF[,order(subset_DF$Sequence)] 
subset_DF = subset_DF[,c("ID","Items")] 
subset_DF$Items = paste0(subset_DF$Items,collapse=" ") 
subset_DF = unique(subset_DF) 
rownames(subset_DF)= NULL 
return(subset_DF) 
})) 

DF_new 
# ID Items 
#1 1 D A C 
#2 2 A B 
+0

Fehler in den Fehler: Fehler in Teilmenge_DF [, c ("ID", "Artikel")]: falsche Anzahl der Dimensionen abgerufen von: FUN (X [[i]], ...) wenn Die Liste ist länger, dh .: mehr ID oder Artikel – skw1990

+0

könnten Sie aktualisieren Sie Ihre Post mit Ausgabe 'dput (Kopf (Daten, 5))', wo Daten ist Ihr Eingabedatenfeld – OdeToMyFiddle

+0

, um Verwirrung zu vermeiden, wird meine Ausgabe hier als verlassen Ich habe die Daten geringfügig geändert, indem ich mehr Zeilen mit zufälligen Eingaben erweitert habe: Ausgabe von dput (Kopf (DF, 5)): Struktur (Liste (ID = c (1L, 1L, 1L, 2L, 2L), Artikel = c ("D", "A", "C", "A", "B"), Folge = c (1L, 2L, 3L, 1L, 2L)), .Names = c ("ID", "Artikel", "Sequenz"), r ow.names = c (NA, 5L), class = "data.frame") – skw1990

Verwandte Themen