crosstab {descr} | R Documentation |
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. |
weight |
An optional vector for a weighted cross tabulation. |
digits |
See |
max.width |
See |
expected |
See |
prop.r |
See |
prop.c |
See |
prop.t |
See |
prop.chisq |
See |
chisq |
See |
fisher |
See |
mcnemar |
See |
resid |
See |
sresid |
See |
asresid |
See |
missing.include |
See |
drop.levels |
See |
format |
See |
cell.layout |
See |
row.labels |
See |
percent |
See |
total.r |
See |
total.c |
See |
dnn |
See |
xlab |
See |
ylab |
See |
main |
An overall title for the plot (see
|
user.missing.dep |
An optional character vector with the levels of
|
user.missing.indep |
An optional character vector with the levels of
|
plot |
Logical: if
in your ‘.Rprofile’ to change the default function behavior. |
... |
Further arguments to be passed to
|
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
.
By default, if weight
has decimals, the result of xtabs
is
rounded before being passed to CrossTable
. If you prefer that
the results are not rounded, add to your code:
options(descr.round.xtabs = FALSE)
Author(s)
Jakson A. Aquino jalvesaq@gmail.com
See Also
CrossTable
, plot.CrossTable
,
xtable.CrossTable
.
Examples
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)