Learn R Programming

vcd (version 1.3-2)

structable: Structured Contingency Tables

Description

This function produces a flat representation of a high-dimensional contingency table constructed by recursive splits (similar to the construction of mosaic displays).

Usage

## S3 method for class 'formula':
structable(formula, data,
direction = NULL, split_vertical = NULL, \dots, subset, na.action)
## S3 method for class 'default':
structable(\dots, direction = NULL, split_vertical = FALSE)

Arguments

formula
a formula object with possibly both left and right hand sides specifying the column and row variables of the flat table.
data
a data frame, list or environment containing the variables to be cross-tabulated, or an object inheriting from class table.
subset
an optional vector specifying a subset of observations to be used. Ignored if data is a contingency table.
na.action
a function which indicates what should happen when the data contain NAs. Ignored if data is a contingency table
...
Robjects which can be interpreted as factors (including character strings), or a list (or data frame) whose components can be so interpreted, or a contingency table object of class "table" or "ftable".
split_vertical
logical vector indicating, for each dimension, whether it should be split vertically or not (default: FALSE). Values are recycled as needed. If the argument is of length 1, the value is alternated for all dimensions. Ignored i
direction
character vector alternatively specifying the splitting direction ("h" for horizontal and "v" for vertical splits). Values are recycled as needed. If the argument is of length 1, the value is alternated for all dime

Value

  • An object of class "structable", inheriting from class "ftable", with the splitting information ("split_vertical") as additional attribute.

Details

This function produces textual representations of mosaic displays, and thus flat contingency tables. The formula interface is quite similar to the one of ftable, but also accepts the mosaic-like formula interface (empty left-hand side). Note that even if the ftable interface is used, the split_vertical or direction argument is needed to specify the order of the horizontal and vertical splits. If pretabulated data with a Freq column is used, than the left-hand side should be left empty---the Freq column will be handled correctly.

"structable" objects can be subset using the [ and [[ operators, using either level indices or names (see examples). The corresponding replacement functions are available as well. In addition, appropriate aperm, cbind, rbind, length, dim, and is.na methods do exist.

References

Meyer, D., Zeileis, A., and Hornik, K. (2006), The strucplot framework: Visualizing multi-way contingency tables with vcd. Journal of Statistical Software, 17(3), 1-48. URL http://www.jstatsoft.org/v17/i03/ and available as vignette("strucplot").

See Also

strucplot, mosaic, ftable

Examples

Run this code
structable(Titanic)
structable(Titanic, split_vertical = c(TRUE, TRUE, FALSE, FALSE))
structable(Titanic, direction = c("h","h","v","v"))
structable(Sex + Class ~ Survived + Age, data = Titanic)

## subsetting of structable objects
(hec <- structable(aperm(HairEyeColor)))

## The "[" operator treats structables as a block-matrix and selects parts of the matrix:
hec[1]
hec[2]
hec[1,c(2,4)]
hec["Male",c("Blue","Green")]

## replacement funcion:
tmp <- hec
(tmp[1,2:3] <- tmp[2,c(1,4)])

## In contrast, the "[[" operator treats structables as two-dimensional
## lists. Indexing conditions on specified levels and thus reduces the dimensionality:

## seek subtables conditioning on levels of the first dimension:
hec[[1]]
hec[[2]]

## Seek subtable from the first two dimensions, given the level "Male"
## of the first variable, and "Brown" from the second
## (the following two commands are equivalent):
hec[["Male"]][["Brown"]]
hec[[c("Male","Brown")]]

## Seeking subtables by conditioning on row and/or column variables:
hec[["Male","Hazel"]]
hec[[c("Male","Brown"),]]
hec[[c("Male","Brown"),"Hazel"]]

## a few other operations
t(hec)
dim(hec)
dimnames(hec)
as.matrix(hec)
length(hec)
cbind(hec[,1],hec[,3])

as.vector(hec) ## computed on the _multiway_ table
as.vector(unclass(hec))

Run the code above in your browser using DataLab