descr (version 1.1.4)

crosstab: Cross tabulation with mosaic plot

Description

This function is a wrapper for CrossTable, adding a mosaic plot and making it easier to do a weighted cross-tabulation.

Usage

crosstab(dep, indep, weight = NULL,
         digits = list(expected = 1, prop = 3, percent = 1, others = 3),
         max.width = NA,
         expected = FALSE, prop.r = FALSE, prop.c = FALSE, prop.t = FALSE,
         prop.chisq = FALSE, chisq = FALSE, fisher = FALSE, mcnemar = FALSE,
         resid = FALSE, sresid = FALSE, asresid = FALSE,
         missing.include = FALSE, drop.levels = TRUE, format = "SPSS",
         cell.layout = TRUE, row.labels = !cell.layout,
         percent = (format == "SPSS" && !row.labels),
         total.r, total.c, dnn = "label", xlab = NULL,
         ylab = NULL, main = "", user.missing.dep, user.missing.indep,
         plot = getOption("descr.plot"), …)

Arguments

dep, indep

Vectors in a matrix or a dataframe. dep should be the dependent variable, and indep should be the independent one.

weight

An optional vector for a weighted cross tabulation.

digits
max.width
expected
prop.r
prop.c
prop.t
prop.chisq
chisq
fisher
mcnemar
resid
sresid
asresid
missing.include
drop.levels
format
cell.layout
row.labels
percent
total.r
total.c
dnn

See CrossTable. If dnn = "label", then the "label" attribute of dep and indep will be used as the dimension names.

xlab
ylab
main

An overall title for the plot (see plot.default and title).

user.missing.dep

An optional character vector with the levels of dep that should be treated as missing values.

user.missing.indep

An optional character vector with the levels of indep that should be treated as missing values.

plot

Logical: if TRUE (default), a mosaic plot is produced. You may put

options(descr.plot = FALSE)

in your .Rprofile to change the default function behavior.

Further arguments to be passed to mosaicplot.

Details

crosstab invokes the CrossTable with all boolean options set to FALSE and "SPSS" as the default format option. The returned CrossTable object can be plotted as a mosaicplot. Note that the gray scale colors used by default in the mosaic plot do not have any statistical meaning. The colors are used only to ease the plot interpretation.

Differently from CrossTable, this function requires both dep and indep arguments. If you want an univariate tabulation, you should try either CrossTable or freq.

See Also

CrossTable, plot.CrossTable, xtable.CrossTable.

Examples

Run this code
# NOT RUN {
educ <- sample(c(1, 2), 200, replace = TRUE, prob = c(0.3, 0.7))
educ <- factor(educ, levels = c(1, 2), labels = c("Low", "High"))
opinion <- sample(c(1, 2, 9), 200, replace = TRUE,
                 prob = c(0.4, 0.55, 0.05))
opinion <- factor(opinion, levels = c(1, 2, 9),
                 labels = c("Disagree", "Agree", "Don't know"))
attr(educ, "label") <- "Education level"
attr(opinion, "label") <- "Opinion"
weight <- sample(c(10, 15, 19), 200, replace = TRUE)

crosstab(opinion, educ, xlab = "Education", ylab = "Opinion")
ct <- crosstab(opinion, educ, weight,
               dnn = c("Opinion", "Education"),
               user.missing.dep = "Don't know",
               expected = TRUE, prop.c = TRUE, prop.r = TRUE,
               plot = FALSE)
ct
plot(ct, inv.y = TRUE)

# Get the table of observed values as an object of class "table"
tab <- ct$tab
class(tab)
tab

# Get the complete cross table as "matrix"
complete.tab <- descr:::CreateNewTab(ct)
class(complete.tab)
complete.tab

## xtable support
library(xtable)

# Print ugly table
print(xtable(ct))

# Print pretty table
# Add to the preamble of your Rnoweb document:
# \usepackage{booktabs}
# \usepackage{multirow}
# \usepackage{dcolumn}
# \newcolumntype{d}{D{.}{.}{-1}}
print(xtable(ct, align = "llddd", multirow = TRUE, hline = TRUE,
             row.labels = TRUE, percent = FALSE,
             caption = "Opinion according to level of education"),
      booktabs = TRUE, include.rownames = FALSE,
      sanitize.text.function = function(x) x)
# }

Run the code above in your browser using DataLab