[R] aggregate vs tapply; is there a middle ground?
Joseph LeBouton
lebouton at msu.edu
Sat Feb 11 23:45:48 CET 2006
Thanks, Phil! I've literally spent two hours on my own trying to find
something that does exactly that. Thanks for another pair of functions
added to my (slowly!) growing R vocabulary.
-jlb
Phil Spector wrote:
> Joseph -
> I'm sure there are clearer and more efficient ways to do it, but
> here's something
> that seems to do what you want:
>
> z = tapply(y,list(var1,var2,var3,var4),sum)
> data.frame(do.call('expand.grid',dimnames(z)),y=do.call('rbind',as.list(z)))
>
>
> - Phil Spector
> Statistical Computing Facility
> Department of Statistics
> UC Berkeley
> spector at stat.berkeley.edu
>
>
> On Sat, 11 Feb 2006, Joseph LeBouton wrote:
>
>> 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
>>
>> ______________________________________________
>> R-help at stat.math.ethz.ch mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide!
>> http://www.R-project.org/posting-guide.html
>>
>
>
--
************************************
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