table: Cross Tabulation and Table Creation (2024)

tableR Documentation

Description

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

Usage

table(..., exclude = if (useNA == "no") c(NA, NaN), useNA = c("no", "ifany", "always"), dnn = list.names(...), deparse.level = 1)as.table(x, ...)is.table(x)## S3 method for class 'table'as.data.frame(x, row.names = NULL, ..., responseName = "Freq", stringsAsFactors = TRUE, sep = "", base = list(LETTERS))

Arguments

...

one or more objects which can be interpreted as factors(including character strings), or a list (or data frame) whosecomponents can be so interpreted. (For as.table, argumentspassed to specific methods; for as.data.frame, unused.)

exclude

levels to remove for all factors in .... Ifit does not contain NA and useNA is notspecified, it implies useNA = "ifany". See‘Details’ for its interpretation for non-factor arguments.

useNA

whether to include NA values in the table.See ‘Details’. Can be abbreviated.

dnn

the names to be given to the dimensions in the result (thedimnames names).

deparse.level

controls how the default dnn isconstructed. See ‘Details’.

x

an arbitrary R object, or an object inheriting from class"table" for the as.data.frame method. Note thatas.data.frame.table(x, *) may be called explicitly fornon-table x for “reshaping” arrays.

row.names

a character vector giving the row names for the dataframe.

responseName

The name to be used for the column of tableentries, usually counts.

stringsAsFactors

logical: should the classifying factors bereturned as factors (the default) or character vectors?

sep, base

passed to provideDimnames.

Details

If the argument dnn is not supplied, the internal functionlist.names is called to compute the ‘dimname names’. If thearguments in ... are named, those names are used. For theremaining 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) andnon-empty, will table potentially drop levels of factorarguments.

useNA controls if the table includes counts of NAvalues: the allowed values correspond to never ("no"), only if the count ispositive ("ifany") and even for zero counts ("always").Note the somewhat “pathological” case of two different kinds ofNAs which are treated differently, depending on bothuseNA and exclude, see d.patho in the‘Examples:’ below.

Both exclude and useNA operate on an “all or none”basis. If you want to control the dimensions of a multiway tableseparately, modify each argument using factor oraddNA.

Non-factor arguments a are coerced via factor(a, exclude=exclude). Since R 3.4.0, care is taken not tocount the excluded values (where they were included in the NAcount, previously).

The summary method for class "table" (used for objectscreated by table or xtabs) which gives basicinformation and performs a chi-squared test for independence offactors (note that the function chisq.test currentlyonly handles 2-d tables).

Value

table() returns a contingency table, an object ofclass "table", an array of integer values.Note that unlike S the result is always an array, a 1Darray if one factor is given.

as.table and is.table coerce to and test for contingencytable, respectively.

The as.data.frame method for objects inheriting from class"table" can be used to convert the array-based representationof a contingency table to a data frame containing the classifyingfactors and the corresponding entries (the latter as componentnamed 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

tabulate is the underlying function and allows finercontrol.

Use ftable for printing (and more) ofmultidimensional tables. margin.table,prop.table, addmargins.

addNA for constructing factors with NA asa level.

xtabs for cross tabulation of data frames with aformula interface.

Examples

require(stats) # for rpois and xtabs## Simple frequency distributiontable(rpois(100, 5))## Check the design:with(warpbreaks, table(wool, tension))table(state.division, state.region)# simple two-way contingency tablewith(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 tableDF <- 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) # does not report NA'stable(a, exclude = NULL) # reports NA'sb <- 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")print(table(b, d), zero.print = ".")## NA counting:is.na(d) <- 3:4d. <- addNA(d)d.[1:7]table(d.) # ", exclude = NULL" is not needed## i.e., if you want to count the NA's of 'd', usetable(d, useNA = "ifany")## "pathological" case:d.patho <- addNA(c(1,NA,1:2,1:3))[-7]; is.na(d.patho) <- 3:4d.patho## just 3 consecutive NA's ? --- well, have *two* kinds of NAs here :as.integer(d.patho) # 1 4 NA NA 1 2#### In R >= 3.4.0, table() allows to differentiate:table(d.patho) # counts the "unusual" NAtable(d.patho, useNA = "ifany") # counts all threetable(d.patho, exclude = NULL) # (ditto)table(d.patho, exclude = NA) # counts none## Two-way tables with NA counts. The 3rd variant is absurd, but shows## something that cannot be done using exclude or useNA.with(airquality, table(OzHi = Ozone > 80, Month, useNA = "ifany"))with(airquality, table(OzHi = Ozone > 80, Month, useNA = "always"))with(airquality, table(OzHi = Ozone > 80, addNA(Month)))
table: Cross Tabulation and Table Creation (2024)
Top Articles
Latest Posts
Article information

Author: Laurine Ryan

Last Updated:

Views: 6159

Rating: 4.7 / 5 (57 voted)

Reviews: 80% of readers found this page helpful

Author information

Name: Laurine Ryan

Birthday: 1994-12-23

Address: Suite 751 871 Lissette Throughway, West Kittie, NH 41603

Phone: +2366831109631

Job: Sales Producer

Hobby: Creative writing, Motor sports, Do it yourself, Skateboarding, Coffee roasting, Calligraphy, Stand-up comedy

Introduction: My name is Laurine Ryan, I am a adorable, fair, graceful, spotless, gorgeous, homely, cooperative person who loves writing and wants to share my knowledge and understanding with you.