# Using xtabs() and rowPerc()

# Preliminaries

`xtabs()` is the numerical version of `barchartGC()`. You use it when you want to study

- the distribution of one factor variable;
- the relationship between two factor variables.

The function `xtabs()` comes with the `stats` package, which is always loaded in R. However, some of the data and other functions that we will use come from the `tigerstats` package, so make sure that it is loaded:

    require(tigerstats)

# One Factor Variable

To see a table of the tallies for the factor variable seat (from the `mat111survey` data frame in the `tigerstats` package):

    xtabs(~seat,data=m111survey)

    ## seat
    ##  1_front 2_middle   3_back
    ##       27       32       12

In order to get the actual distribution of seat, you want percents rather than counts, so apply the function `rowPerc()` from `tigerstats`:

    rowPerc(xtabs(~seat,data=m111survey))

    ##
    ## seat 1_front 2_middle 3_back Total
    ##        38.03    45.07   16.9   100

If you have a table of the counts for a variable, then you can enter it directly. For example, suppose you have already made:

    Seat <- xtabs(~seat,data=m111survey)
    Seat

    ## seat
    ##  1_front 2_middle   3_back
    ##       27       32       12

Then you can just enter the table into `rowPerc()`:

    rowPerc(Seat)

    ##
    ## seat 1_front 2_middle 3_back Total
    ##        38.03    45.07   16.9   100

# Two Factor Variables

You can also use `xtabs()` to study the relationship between two factor variables. For example, if you want to see whether males and females differ in their seating preferences, then you might try formula-data input as follows:

    xtabs(~sex+seat,data=m111survey)

    ##         seat
    ## sex      1_front 2_middle 3_back
    ##   female      19       16      5
    ##   male         8       16      7

Of course, row percents are the way to actually study the relationship:

    rowPerc(xtabs(~sex+seat,data=m111survey))

    ##         seat
    ## sex      1_front 2_middle 3_back  Total
    ##   female   47.50    40.00  12.50 100.00
    ##   male     25.81    51.61  22.58 100.00

Note the type of formula used to study the relationship between two factor variables:

\[\sim ExplanatoryFactor + ResponseFactor\]

Note also that people usually want to do several things with their two-way table, so often they will make it and store it in a well-named object, and then print out the object:

    SexSeat <- xtabs(~sex+seat,data=m111survey)
    SexSeat

    ##         seat
    ## sex      1_front 2_middle 3_back
    ##   female      19       16      5
    ##   male         8       16      7

Then to get row percents they just put in the named object:

    rowPerc(SexSeat)

    ##         seat
    ## sex      1_front 2_middle 3_back  Total
    ##   female   47.50    40.00  12.50 100.00
    ##   male     25.81    51.61  22.58 100.00

# Column Percents, Too!

We don’t use column percents very often, but you can get them:

    colPerc(SexSeat)

    ##         seat
    ## sex      1_front 2_middle 3_back
    ##   female   70.37       50  41.67
    ##   male     29.63       50  58.33
    ##   Total   100.00      100 100.00