Wie tapply () auf mehrere Spalten des Datenrahmens mit R?
Habe ich einen Daten-frame wie folgt:
a b1 b2 b3 b4 b5 b6 b7 b8 b9
D 4 6 9 5 3 9 7 9 8
F 7 3 8 1 3 1 4 4 3
R 2 5 5 1 4 2 3 1 6
D 9 2 1 4 3 3 8 2 5
D 5 4 3 1 6 4 1 8 3
R 3 7 9 1 8 5 3 4 2
D 4 1 8 2 6 3 2 7 5
F 7 1 7 2 7 1 6 2 4
D 6 3 9 3 9 9 7 1 2
Die Funktion tapply(df[,2], INDEX = df$a, sum)
funktioniert gut, um eine Tabelle erstellen, die Summen alles in df[,2] df$ein, aber wenn ich versuche tapply(df[,2:10], INDEX = df$a, sum)
um eine ähnliche Tabelle, außer mit einer Summe für jede Spalte (2, 3, 4,..., 10), ich bekomme eine Fehlermeldung Lesen:
Fehler in tapply(df[, 2:10], INDEX = df$a, Summe) : Argumente müssen dieselbe Länge
Zusätzlich würde ich gerne die Zeile Namen der Tabelle, die Spaltennamen der df[,2:10]
so dass Zeile 1 ist b1, Zeile 2 ist b2, und Zeile 9 ist b9.
InformationsquelleAutor der Frage Jota | 2011-08-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weil tapply arbeitet auf Vektoren und Transformationen df[,2:10] um einen Vektor. Neben dieser, Betrag geben Sie die Summe nicht die Summe pro Spalte. Verwenden
aggregate()
zB :Wenn Sie möchten, eine Liste zurückgegeben, die Sie nutzen könnten, indem Sie (). Stellen Sie sicher, dass Sie colSums statt Summe, als durch Werke, die auf einem geschlitzten dataframe :
InformationsquelleAutor der Antwort Joris Meys
Hier ist eine Möglichkeit, um
data.table
zu diesem problem.Und hier ist ein
dplyr
AnsatzInformationsquelleAutor der Antwort Jota
Andere Möglichkeit ist die Kombination von
apply
undtapply
.Produzieren, die Ausgabe (also eine matrix)
Dann können Sie
as.data.frame()
um einen Daten-frame als Ausgabe.InformationsquelleAutor der Antwort Doon_Bogan