> From: r-help-boun...@r-project.org 
> [mailto:r-help-boun...@r-project.org] On Behalf Of Noah Silverman
> Sent: Tuesday, May 11, 2010 5:38 PM
> To: r-help@r-project.org
> Subject: [R] Summarizing counts by multiple factors
> 
> Hi,
> 
> An example data set is:
> 
> group    level    color
> A        1        "blue"
> A        1        "Red"
> B        1        "blue"
> B        2        "Red"
> A        2        "Red"
> B        2        "Red"
> B        2        "blue"
> B        2        "blue"
> A        2        "blue"
> A        2        "Red"
> 
> 
> I'd like to compute a summary of counts for each combination 
> of group, 
> level, color.
> 
> An example output would be something like this:
> group    level    color        count
> A        1        "blue"        1
> A        2        "red"        2
> B        2        "red"        2
> etc..
> 
> 
> The tapply function seems to do this for a single variable, but I can 
> figure out to to do it for combinations of more than one 
> factor.

The by= argument can be a list of several factors.
You can also give it the output of interaction(fac1,fac2).

For nice printing you might also like the ftable function.
With your dataset stored in the data.frame called "d" I get:

  > ft <- ftable(1~group+level+color, data=d)
  > ft
  group level color   
  A     1     blue   1
              Red    1
        2     blue   1
              Red    2
  B     1     blue   1
              Red    0
        2     blue   2
              Red    2
  > dft <- as.data.frame(ft)
  > dft[dft$Freq>0,,drop=FALSE]
    group level color Freq
  1     A     1  blue    1
  2     B     1  blue    1
  3     A     2  blue    1
  4     B     2  blue    2
  5     A     1   Red    1
  7     A     2   Red    2
  8     B     2   Red    2

Rearranging the terms in the formula given to ftable()
will rearrange the table:
  > ftable(color~group+level, data=d)
              color blue Red
  group level               
  A     1              1   1
        2              1   2
  B     1              1   0
        2              2   2
  > ftable(color+level~group, data=d)
        color blue   Red  
        level    1 2   1 2
  group                   
  A              1 1   1 2
  B              1 2   0 2

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com 

> I also 
> see the ave function, but can't figure out how to apply it to 
> multiple 
> factors.
> 
> Any suggestions?
> 
> Thanks
> 
> ______________________________________________
> R-help@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.
> 

______________________________________________
R-help@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.

Reply via email to