table {base}R Documentation

Cross Tabulation and Table Creation


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


table(..., exclude = c(NA, NaN), dnn = list.names(...),
      deparse.level = 1)
as.table(x, ...)

## S3 method for class 'table':, row.names = NULL, ...,
              responseName = "Freq")


... 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 and, 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 method.
row.names a character vector giving the row names for the data frame.
responseName The name to be used for the column of table entries, usually counts.


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.


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


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. margin.table, prop.table, addmargins.


require(stats) # for rpois and xtabs
## Simple frequency distribution
## Check the design:
with(warpbreaks, table(wool, tension))
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() <-> :
UCBAdmissions ## already a contingency table
DF <-
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, exclude=NULL)
b <- factor(rep(c("A","B","C"), 10))
table(b, exclude="B")
d <- factor(rep(c("A","B","C"), 10), levels=c("A","B","C","D","E"))
table(d, exclude="B")
print(table(b,d), zero.print = ".")

## NA counting: <- 3:4
d <- factor(d, exclude=NULL)
table(d, exclude = NULL)

[Package base version 2.5.0 Index]