| 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.