Tavallinen taulukkokomento table() laskee vektorin jokaisen alkion frekvenssin näin:
R> df <- data.frame(var = c("A", "A", "B", "B", "C", "C", "C"))
R> table(df)
df
A B C
2 2 3
Se kertoo siis, että meillä on kaksi A:ta ja B:tä ja kolme C:tä.
Jos tilanne on kuitenkin tällainen:
df <- data.frame(var = c("A", "A", "B", "B", "C", "C", "C"), value = c(10, 20, 20, 40, 15, 25, 35))
eli meillä on luokitteleva muuttuja var ja numeerinen muuttuja value, ja haluamme jokaiselle luokalle numeerisen muuttujan summan, voimme käyttää perus-R:n komentoa aggregate näin
R> aggregate(value ~ var, data = df, FUN = sum)
var wt
1 A 40
2 B 60
3 C 70
Koska käytän usein myös data.table-pakettia, tässä vielä yksinkertainen ratkaisu sillä; oletetaan, että teemme (tai meillä on muualta saatu datataulukko, esim. freadilla)
library("data.table")
dt <- data.table(df)
Sitten voimme summata yhden sarakkeen toisen sarakkeen mukaan näin (ja tallentaa arvon uuteen muuttujaan tot):
setDT(dt)[, .(n = sum(value)), var]

