soeren.vogel at eawag.ch
2009-Feb-27 14:43 UTC
[R] cross tabulation: convert frequencies to percentages
Hello, might be rather easy for R pros, but I've been searching to the dead end to ... twsource.area <- table(twsource, area, useNA="ifany") gives me a nice cross tabulation of frequencies of two factors, but now I want to convert to pecentages of those absolute values. In addition I'd like an extra column and an extra row with absolute sums. I know, Excel or the likes will produce it more easily, but how would the procedure look like in R? Thanks, S?ren
Marc Schwartz
2009-Feb-27 14:59 UTC
[R] cross tabulation: convert frequencies to percentages
on 02/27/2009 08:43 AM soeren.vogel at eawag.ch wrote:> Hello, > > might be rather easy for R pros, but I've been searching to the dead end > to ... > > twsource.area <- table(twsource, area, useNA="ifany") > > gives me a nice cross tabulation of frequencies of two factors, but now > I want to convert to pecentages of those absolute values. In addition > I'd like an extra column and an extra row with absolute sums. I know, > Excel or the likes will produce it more easily, but how would the > procedure look like in R?See ?prop.table which is referenced in the See Also section of ?table. This will give you proportions, so if you want percentages, just multiply by 100. To add row and column totals, see ?addmargins which is also in the See Also for ?table TAB <- table(state.division, state.region)> TABstate.region state.division Northeast South North Central West New England 6 0 0 0 Middle Atlantic 3 0 0 0 South Atlantic 0 8 0 0 East South Central 0 4 0 0 West South Central 0 4 0 0 East North Central 0 0 5 0 West North Central 0 0 7 0 Mountain 0 0 0 8 Pacific 0 0 0 5 # Overall table proportions> prop.table(TAB)state.region state.division Northeast South North Central West New England 0.12 0.00 0.00 0.00 Middle Atlantic 0.06 0.00 0.00 0.00 South Atlantic 0.00 0.16 0.00 0.00 East South Central 0.00 0.08 0.00 0.00 West South Central 0.00 0.08 0.00 0.00 East North Central 0.00 0.00 0.10 0.00 West North Central 0.00 0.00 0.14 0.00 Mountain 0.00 0.00 0.00 0.16 Pacific 0.00 0.00 0.00 0.10 # Column proportions> prop.table(TAB, 2)state.region state.division Northeast South North Central West New England 0.6666667 0.0000000 0.0000000 0.0000000 Middle Atlantic 0.3333333 0.0000000 0.0000000 0.0000000 South Atlantic 0.0000000 0.5000000 0.0000000 0.0000000 East South Central 0.0000000 0.2500000 0.0000000 0.0000000 West South Central 0.0000000 0.2500000 0.0000000 0.0000000 East North Central 0.0000000 0.0000000 0.4166667 0.0000000 West North Central 0.0000000 0.0000000 0.5833333 0.0000000 Mountain 0.0000000 0.0000000 0.0000000 0.6153846 Pacific 0.0000000 0.0000000 0.0000000 0.3846154> addmargins(TAB)state.region state.division Northeast South North Central West Sum New England 6 0 0 0 6 Middle Atlantic 3 0 0 0 3 South Atlantic 0 8 0 0 8 East South Central 0 4 0 0 4 West South Central 0 4 0 0 4 East North Central 0 0 5 0 5 West North Central 0 0 7 0 7 Mountain 0 0 0 8 8 Pacific 0 0 0 5 5 Sum 9 16 12 13 50 HTH, Marc Schwartz