Ich habe folgendes Problem, während ich eine Analyse mit R durchführe.
Ich habe einen Datenrahmen wie diesen:
Name | Group | Count
Person 1 | A | 3
Person 2 | A | 1
Person 3 | A | 0
Person 1 | B | 5
Person 2 | B | 0
Person 3 | B | 1
Person 1 | C | 1
und ich müsste es "erweitern" (nicht sicher, ob der richtige Begriff), um so zu sein:
Person 1 | A
Person 1 | A
Person 1 | A
Person 2 | A
Person 1 | B
Person 1 | B
etc.
Es nimmt also den Wert des Paares Person 1 und A (in diesem Beispiel 3) an und erstellt drei Zeilen mit Person 1 und A, und zwar für jede Person-Gruppen-Kombination. Ich kann keine guten Wörter für die Online-Suche finden.
reshape()
Funktionreshape2
Paket in R untersuchen. Es kann auch hilfreich sein,dput
zwei Beispieldatenrahmen zu verwenden: einen mit der Eingabe und einen mit der Ausgabe.Antworten:
Während es ein sehr nützliches Paket ist, denke ich reshape Overkill in diesem Fall ist, rep kann die Arbeit erledigen.
Hier sind einige Beispieldaten:
Nun, um es zu "erweitern":
Ich konnte keine Möglichkeit finden, direkt am Datenrahmen zu arbeiten, also arbeite ich an jeder Variablen einzeln und setze sie dann wieder zusammen. Das ist ein bisschen hässlich, sollte aber in Ordnung sein, solange Sie darauf achten, immer zu verwenden die gleiche Variable für die Anzahl.
quelle
df[rep(seq_len(nrow(df)), df$count), 1:2]
:?Sie können die Untable-Funktion aus dem Umformungspaket verwenden.
Angesichts der oben genannten df (von @ Gaël Laurans)
quelle
untable
macht genau das, was ich in meinem Kommentar erwähnt habe :-) Danke, dass du mich an diese Funktion erinnert hast!Und
uncount
vontidyr
nun an ergibt sich das gleiche Ergebnis wie oben.quelle