table {base} | R Documentation

## Cross Tabulation and Table Creation

### 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 = list.names(...),
          deparse.level = 1)
    as.table(x, ...)
    is.table(x)

    as.data.frame.table(x, row.names = NULL, optional = FALSE,
                        responseName = "Freq")

### Arguments

`...` | objects which can be interpreted as factors (including character strings), or a list (or data frame) whose components can be so interpreted. (For `as.table`, arguments passed to specific methods.)
`exclude` | values to use in the exclude argument of `factor` when interpreting non-factor objects; if specified, levels to remove from all factors in `...`.
`dnn` | the names to be given to the dimensions in the result (the dimnames names).
`deparse.level` | controls how the default `dnn` is constructed. See details.
`x` | an arbitrary R object, or an object inheriting from class `"table"` for the `as.data.frame` method.
`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.
`responseName` | The name to be used for the column of table entries, usually counts.

### 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.

Only when `exclude` is specified (i.e., not by default), will `table` drop levels of factor arguments potentially.

Note that `as.data.frame.table` is also the `"table"` method for `as.data.frame`, but the `responseName` argument can only be given if it is called explicitly.

### Value

`table()` returns a contingency table, an object of `class` `"table"`, an array of integer values.
There is a `summary` method for 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` currently only handles 2-d tables).
`as.table` and `is.table` coerce to and test for contingency table, respectively.
The `as.data.frame` method for objects inheriting from class `"table"` can be used to convert the array-based representation of a contingency table to a data frame containing the classifying factors and the corresponding entries (the latter as component named by `responseName`). This is the inverse of `xtabs`.

### References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

### See Also

Use `ftable` for printing (and more) of multidimensional tables.

### Examples

    require(stats) # for rpois and xtabs
    ## Simple frequency distribution
    table(rpois(100,5))
    attach(warpbreaks)
    ## Check the design:
    table(wool, tension)
    detach()
    table(state.division, state.region)

    # simple two-way contingency table
    with(airquality, 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() :
    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))

    a <- rep(c(NA, 1/0:3), 10)
    table(a)
    table(a, exclude=NULL)
    b <- factor(rep(c("A","B","C"), 10))
    table(b)
    table(b, exclude="B")
    d <- factor(rep(c("A","B","C"), 10), levels=c("A","B","C","D","E"))
    table(d, exclude="B")

    ## NA counting:
    is.na(d) <- 3:4
    d <- factor(d, exclude=NULL)
    d[1:7]
    table(d, exclude = NULL)

[Package base version 2.3.1 Index]