crosstab | R Documentation |
This function is a wrapper for CrossTable
, adding a
mosaic plot and making it easier to do a weighted cross-tabulation.
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"), ...)
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
|
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)
Jakson A. Aquino jalvesaq@gmail.com
CrossTable
, plot.CrossTable
,
xtable.CrossTable
.
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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.