Der normale Tabellenbefehl table() berechnet die Häufigkeit jedes Elements eines Vektors, etwa so:
R> df <- data.frame(var = c("A", "A", "B", "B", "C", "C", "C"))
R> table(df)
df
A B C
2 2 3
Er sagt uns also, dass wir zweimal A und B und dreimal C haben.
Haben wir aber eine Situation wie diese:
df <- data.frame(var = c("A", "A", "B", "B", "C", "C", "C"), value = c(10, 20, 20, 40, 15, 25, 35))
also eine kategoriale Variable var und eine numerische Variable value, und wollen für jede Kategorie die Summe über die numerische Variable, dann nehmen wir einfach den Base-R-Befehl aggregate, etwa so
R> aggregate(value ~ var, data = df, FUN = sum)
var wt
1 A 40
2 B 60
3 C 70
Da ich auch oft das Paket data.table nutze, hier noch eine einfache Lösung damit; angenommen, wir machen (bzw. haben eine Datentabelle aus einer anderen Quelle, etwa fread)
library("data.table")
dt <- data.table(df)
Dann können wir einfach über eine Spalte in Abhängigkeit von einer anderen summieren, etwa so (und den Wert einer neuen Variablen tot zuweisen):
setDT(dt)[, .(n = sum(value)), var]

