modify each argument
using ` [ factor ](/link/factor?package=base&version=3.6.2) ` or ` [ addNA
](/link/addNA?package=base&version=3.6.2) ` .

Non-factor arguments ` a ` are coerced via ` factor(a, exclude=exclude) ` .
Since  R  3.4.0, care is taken _not_ to count the excluded values (where they
were included in the ` NA ` count, previously).

The ` summary ` method for class ` "table" ` (used for objects created by `
table ` or ` [ xtabs ](/link/xtabs?package=base&version=3.6.2) ` ) which gives
basic information and performs a chi-squared test for independence of factors
(note that the function ` [ chisq.test
](/link/chisq.test?package=base&version=3.6.2) ` currently only handles 2-d
tables).

##  References

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

##  See Also

` [ tabulate ](/link/tabulate?package=base&version=3.6.2) ` is the underlying
function and allows finer control.

Use ` [ ftable ](/link/ftable?package=base&version=3.6.2) ` for printing (and
more) of multidimensional tables. ` [ margin.table
](/link/margin.table?package=base&version=3.6.2) ` , ` [ prop.table
](/link/prop.table?package=base&version=3.6.2) ` , ` [ addmargins
](/link/addmargins?package=base&version=3.6.2) ` .

` [ addNA ](/link/addNA?package=base&version=3.6.2) ` for constructing factors
with ` [ NA ](/link/NA?package=base&version=3.6.2) ` as a level.

` [ xtabs ](/link/xtabs?package=base&version=3.6.2) ` for cross tabulation of
data frames with a formula interface.

##  Examples

[ Run this code
](https://app.datacamp.com/workspace/preview?_tag=rdocs&rdocsPath=packages%2Fbase%2Fversions%2F3.6.2%2Ftopics%2Ftable&utm_source=r-docs&utm_medium=docs&utm_term=table&utm_content=run_example_in_workspace)

    
    
    # NOT RUN {
    require(stats) # for rpois and xtabs
    ## Simple frequency distribution
    table(rpois(100, 5))
    ## 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() <-> 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)                 # does not report NA's
    table(a, exclude = NULL) # reports NA's
    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")
    print(table(b, d), zero.print = ".")
    
    ## NA counting:
    is.na(d) <- 3:4
    d. <- addNA(d)
    d.[1:7]
    table(d.) # ", exclude = NULL" is not needed
    ## i.e., if you want to count the NA's of 'd', use
    table(d, useNA = "ifany")
    
    ## "pathological" case:
    d.patho <- addNA(c(1,NA,1:2,1:3))[-7]; is.na(d.patho) <- 3:4
    d.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" NA
    table(d.patho, useNA = "ifany")  # counts all three
    table(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, M