[R] aggregate vs tapply; is there a middle ground?

Joseph LeBouton lebouton at msu.edu
Sat Feb 11 22:28:21 CET 2006


Dear all,

I'm wanting to do a series of comparisons among 4 categorical variables:

a <- aggregate(y, list(var1, var2, var3, var4), sum)

This gets me a very nice 2-dimensional data frame with one column per 
variable, BUT, as help for aggregate says, <<empty subsets are 
removed>>.  I don't see in help(aggregate) how I can change this.

In contrast,
a <- tapply(y, list(var1, var2, var3, var4), sum)

gives me results for everything including empty subsets, but in an 
awkward 4-dimensional array that takes me another 10 lines of 
inefficient code to turn into a 2D data.frame.

Is there a way to directly do this calculation INCLUDING results for 
empty subsets, and still obtain a 2D array, matrix, or data.frame?  OR 
alternatively is there a simple way to mush the 4D result from the 
tapply into a 2D matrix/data.frame?

thanks very much in advance for any help!

-jlb

-- 
************************************
Joseph P. LeBouton
Forest Ecology PhD Candidate
Department of Forestry
Michigan State University
East Lansing, Michigan 48824

Office phone: 517-355-7744
email: lebouton at msu.edu




More information about the R-help mailing list