### Name: table ### Title: Cross Tabulation and Table Creation ### Aliases: table summary.table print.summary.table as.data.frame.table ### as.table as.table.default is.table ### Keywords: category ### ** Examples 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) 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") 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") ## 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)))