It is relatively easy to collapse data in R using one or more BY variables and a defined function.
# aggregate data frame mtcars by cyl and vs, returning means
# for numeric variables
aggdata <-aggregate(mtcars, by=list(cyl,vs),
When using the aggregate() function, the by variables must be in a list (even if there is only one). The function can be built-in or user provided.