Erstelle Spalten aus Faktoren und zähle [duplizieren]
Diese Frage hat hier bereits eine Antwort:
Wie bekomme ich eine Notfalltabelle? 6 answersSchnellere Berechnungsmethoden für Frequenzen und Casts von Long zu Wide 4 AntwortenEin scheinbar einfaches Problem hält mich sehr beschäftigt.
Ich habe einen Datenrahmen:
> df1
Name Score
1 Ben 1
2 Ben 2
3 John 1
4 John 2
5 John 3
Ich möchte eine Zusammenfassung der Tabelle wie folgt erstellen:
> df2
Name Score_1 Score_2 Score_3
1 Ben 1 1 0
2 John 1 1 1
So muss df2 (i) nur eindeutige "Namen" anzeigen und (ii) Spalten aus den eindeutigen Faktoren in "Punktzahl" erstellen und (iii) zählen, wie oft eine Person diese Punktzahl erhalten hat.
Ich habe versucht
df2 <- ddply(df1, c("Name"), summarise
,Score_1 = sum(df1$Score == 1)
,Score_2 = sum(df1$Score == 2)
,Score_3 = sum(df1$Score == 3))
was produziert:
Name Score_1 Score_2 Score_3
1 Ben 2 2 1
2 John 2 2 1
So mein Versuch zählt falschall Vorkommen anstatt "pro Gruppe" zu zählen
BEARBEITEN Wie aus den Kommentaren hervorgeht, auch ausprobiertreshape
(möglicherweise einfach falsch):
> reshape(df1, idvar = "Name", timevar = "Score", direction = "wide")
Name
1 Ben
3 John
Für den Anfang fehlt die Spalte "Score", aber schlimmer als das, aus meiner Forschung überreshape
, Ich bin nicht davon überzeugt, dass ich ein @ bekomAnzah jedes Faktors, das ist der springende Punkt.