[R] Formatted contingency tables with (%)

David Winsemius dwinsemius at comcast.net
Tue Nov 10 21:36:47 CET 2009


On Nov 10, 2009, at 3:07 PM, soeren.vogel at eawag.ch wrote:

> Quite often, I need those tables:
>
> x <- sample(c("a", "b", "c"), 40, rep=T)
> y <- sample(c("X", "Y"), 40, rep=T)
> (tbl <- table(x, y))
> (z <- as.factor(paste(as.vector(tbl), " (",  
> round(prop.table(as.vector(tbl)) * 100, 1), "%)", sep="")))
> matrix(as.factor(z), nrow=3, dimnames=dimnames(tbl))
>
> But the result looks ugly and is not copy&paste-able for LaTeX  
> verbatim or table environment, moreover, the "\"" is not what I want  
> in the printout. How to achieve:
>
>   y
> x  X          Y
> a  3  (7.5%)   7 (17.5%)
> b  9 (22.5%)   5 (12.5%)
> c  6 (15.0%)  10 (25.0%)
>
> Thank you for help or hints.


 > library(gmodels)
 >> CrossTable(tbl, prop.c=F, prop.r=F, prop.chisq=F)  # author, Marc  
Schwartz


    Cell Contents
|-------------------------|
|                       N |
|         N / Table Total |
|-------------------------|


Total Observations in Table:  40


              | y
            x |         X |         Y | Row Total |
-------------|-----------|-----------|-----------|
            a |         6 |        10 |        16 |
              |     0.150 |     0.250 |           |
-------------|-----------|-----------|-----------|
            b |        12 |         4 |        16 |
              |     0.300 |     0.100 |           |
-------------|-----------|-----------|-----------|
            c |         3 |         5 |         8 |
              |     0.075 |     0.125 |           |
-------------|-----------|-----------|-----------|
Column Total |        21 |        19 |        40 |
-------------|-----------|-----------|-----------|

-- 

David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list