R: Cross Tabulation

table {base} | R Documentation

## Cross Tabulation

### Description

`table` uses the cross-classifying factors to build a contingency table of the counts at each combination of factor levels.

### Usage

    table(..., exclude = c(NA, NaN), dnn, deparse.level = 1)
    as.table(x, ...)
    is.table(x)
    as.data.frame.table(x, row.names = NULL, optional = FALSE, ...)

### Arguments

`...` | objects which can be interpreted as factors (including character strings), or a list (or data frame) whose components can be so interpreted
`exclude` | values to use in the exclude argument of `factor` when interpreting non-factor objects
`dnn` | the names to be given to the dimensions in the result (`the dimname names').
`deparse.level` | controls how the default `dnn` is constructed. See details.
`x` | an arbitrary R object.
`row.names` | a character vector giving the row names for the data frame.
`optional` | a logical controlling whether row names are set. Currently not used.

### Details

If the argument `dnn` is not supplied, the internal function `list.names` is called to compute the `dimname names'. If the arguments in `...` are named, those names are used. For the remaining arguments, `deparse.level = 0` gives an empty name, `deparse.level = 1` uses the supplied argument if it is a symbol, and `deparse.level = 2` will deparse the argument.

There is a `summary` method for contingency table objects created by `table` or `xtabs`, which gives basic information and performs a chi-squared test for independence of factors (note that the function `chisq.test` in package ctest currently only handles 2-d tables).

`as.table` and `is.table` coerce to and test for contingency table, respectively.

`as.data.frame.table` is a method for the generic function `as.data.frame` to convert the array-based representation of a contingency table to a data frame containing the classifying factors and the corresponding counts (the latter as component `Freq`). This is the inverse of `xtabs`.

### Examples

    ## Simple frequency distribution
    table(rpois(100,5))
    data(warpbreaks)
    attach(warpbreaks)
    ## Check the design:
    table(wool, tension)
    data(state)
    table(state.division, state.region)

    data(airquality)
    attach(airquality)
    # simple two-way contingency table
    table(cut(Temp, quantile(Temp)), Month)

    a <- letters[1:3]
    table(a, sample(a))                    # dnn is c("a", "")
    table(a, sample(a), deparse.level = 0) # dnn is c("", "")
    table(a, sample(a), deparse.level = 2) # dnn is c("a", "sample(a)")

    ## xtabs() <-> as.data.frame.table() :
    data(UCBAdmissions) ## already a contingency table
    DF <- as.data.frame(UCBAdmissions)
    class(tab <- xtabs(Freq ~ ., DF))# xtabs & table
    ## tab *is* ``the same'' as the original table:
    all(tab == UCBAdmissions)
    all.equal(dimnames(tab), dimnames(UCBAdmissions))

[Package Contents]