Skip to content

Proportions again

2 messages · Gabor Grothendieck, Marc Schwartz

#
That's true; however, 

CrossTable(x,x)

does give the desired counts and proportions in the margin
line at the bottom.  See the row labelled Column Total in
the following example based on Carlos' vector:
Cell Contents
|-----------------|
|               N |
|   N / Row Total |
|   N / Col Total |
| N / Table Total |
|-----------------|

 
Total Observations in Table:  8 

 
             | sex 
         sex |         1 |         2 | Row Total | 
-------------|-----------|-----------|-----------|
           1 |         3 |         0 |         3 | 
             |     1.000 |     0.000 |     0.375 | 
             |     1.000 |     0.000 |           | 
             |     0.375 |     0.000 |           | 
-------------|-----------|-----------|-----------|
           2 |         0 |         5 |         5 | 
             |     0.000 |     1.000 |     0.625 | 
             |     0.000 |     1.000 |           | 
             |     0.000 |     0.625 |           | 
-------------|-----------|-----------|-----------|
Column Total |         3 |         5 |         8 | 
             |     0.375 |     0.625 |           | 
-------------|-----------|-----------|-----------|


---
Date:   Sun, 29 Feb 2004 13:48:27 -0600 
From:   Marc Schwartz <MSchwartz at MedAnalytics.com>
To:   <ggrothendieck at myway.com> 
Cc:   <mcardeal at atarde.com.br>,R-Help <r-help at stat.math.ethz.ch> 
Subject:   RE: [R] Proportions again
On Sun, 2004-02-29 at 12:40, Gabor Grothendieck wrote:
Gabor,

Thanks for pointing out CrossTable().

Just as a quick heads up/clarification for Carlos, CrossTable() is
designed to cross-tabulate two vectors and generate counts,
row/column/table proportions and other results from the 2 dimensional
cross-tab in a (hopefully) nicely formatted fashion.

It is not presently designed to handle generating proportions from the
tabulation of a single vector with repeating values (such as Carlos'
example) and will generate an error message if a single vector is
passed.

In that scenario, as many folks have already recommended, the
combination of table() and prop.table() would be preferred.

HTH,

Marc Schwartz
#
On Sun, 2004-02-29 at 18:27, Gabor Grothendieck wrote:
snip

OK....true. I had not considered that approach from a design
perspective, but it does provide the requisite information.

One could feasibly reduce some of the complexity of the table by setting
some of the prop.* arguments to false:

CrossTable(sex, sex, prop.c = FALSE, prop.t = FALSE)

which would yield:


   Cell Contents
|-----------------|
|               N |
|   N / Row Total |
|-----------------|

 
Total Observations in Table:  8 

 
             | sex 
         sex |         1 |         2 | Row Total | 
-------------|-----------|-----------|-----------|
           1 |         3 |         0 |         3 | 
             |     1.000 |     0.000 |     0.375 | 
-------------|-----------|-----------|-----------|
           2 |         0 |         5 |         5 | 
             |     0.000 |     1.000 |     0.625 | 
-------------|-----------|-----------|-----------|
Column Total |         3 |         5 |         8 | 
-------------|-----------|-----------|-----------|


This gives you the proportions in the row margins versus the columns.
You still end up with some extraneous data, but perhaps a little less
so.

Just seems like overkill to get the same information that:
sex
    1     2
0.375 0.625

gives you, without the lengthy function call.  :-)


Thanks Gabor.

Best regards,

Marc