[R] group means of multi-way table?

David Winsemius dwinsemius at comcast.net
Wed Sep 22 01:07:40 CEST 2010


On Sep 21, 2010, at 6:52 PM, Simon Kiss wrote:

> hello, can someone tell me how to generate the means for a data  
> frame that looks like this? My data frame has many more variables,  
> but I won't bother you with those; these are the one's that I'm  
> interested in.
> Needless to say, z is the variable in which I'm interested. I'd like  
> to find out the mean score of z for NDP managers, Conservative  
> managers and Liberal managers and then for a few other configurations.
> Ive played around with aggregate, tapply and by, but I can't get it  
> to work.
> Cordially,
> Simon Kiss
> mydata=data.frame(cbind(x,y,z))

How about testing your code? That throws an error;

> mydata$x=as.factor(sample(c("labourers", "salaried", "managers"),  
> size=300, replace=TRUE))
> mydata$y=as.factor(sample(c("NDP", "Green", "Liberal",  
> "Conservative"), size=300, replace=TRUE))
> mydata$z=as.numeric(sample(1:4, size=300, replace=TRUE))

Try instead:
  mydata <-data.frame(
x=as.factor(sample(c("labourers", "salaried", "managers"), size=300,  
replace=TRUE)),
y=as.factor(sample(c("NDP", "Green", "Liberal", "Conservative"),  
size=300, replace=TRUE)), z=as.numeric(sample(1:4, size=300,  
replace=TRUE))
                     )
 > str(mydata)
'data.frame':	300 obs. of  3 variables:
  $ x: Factor w/ 3 levels "labourers","managers",..: 2 2 1 1 1 2 1 3 2  
3 ...
  $ y: Factor w/ 4 levels "Conservative",..: 3 2 3 2 4 1 1 3 3 4 ...
  $ z: num  3 3 2 4 4 1 1 3 4 1 ...

Then with a valid object ...
 > with( subset(mydata, x == "managers"),
                         tapply(z, y, mean) )
Conservative        Green      Liberal          NDP
     2.161290     2.333333     2.615385     2.333333

>
> *********************************
> Simon J. Kiss, PhD
> Assistant Professor, Wilfrid Laurier University
> 223 Grand River Hall, 171 Colborne Street
> Brantford, Ontario, Canada
> N3T 2C9
> Cell: +1 519 761 7606
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list