I have the following data frame
x <- read.table(text = \" id1 id2 val1 val2 1 a x 1 9 2 a x 2 4 3 a y 3 5 4 a y 4
You can also use the plyr::each() to introduce multiple functions:
plyr::each()
aggregate(cbind(val1, val2) ~ id1 + id2, data = x, FUN = plyr::each(avg = mean, n = length))