tapply() apply different functions on factor sliced rows, or category statistic.
Firstly, loading a data set.
> library(MASS)
> head(painters)
Composition Drawing Colour Expression School
Da Udine 10 8 16 3 A
Da Vinci 15 16 4 14 A
Del Piombo 8 13 16 7 A
Del Sarto 12 16 9 8 A
Fr. Penni 0 15 8 0 A
Guilio Romano 15 16 4 14 A
We will use the data "painters" in this library. We could compute mean value of a column
> mean(painters$Composition[painters$School == "C"])
[1] 13.16667
If we want to compute mean value for every different School, we could use tapply()
> tapply(painters$Composition, painters$School, mean)
A B C D E F G H
10.40000 12.16667 13.16667 9.10000 13.57143 7.25000 13.85714 14.00000
Max value for every different School
> tapply(painters$Composition, painters$School, max)
A B C D E F G H
17 15 16 15 18 9 18 16