Aggregate can also be applied to other functions, custom built or otherwise. There are also other options, such as the data.table or ddply packages. Some of the apply functions can also do the simple single level stuff too.