R: Recover Original Data From Contingency Table

Untable {DescTools} | R Documentation

## Recover Original Data From Contingency Table

### Description

Recreates the data.frame out of a contingency table x.

### Usage

    Untable(x, ...)

    ## S3 method for class 'data.frame'
    Untable(x, freq = "Freq", rownames = NULL, ...)
    ## Default S3 method:
    Untable(x, dimnames = NULL, type = NULL, rownames = NULL, colnames = NULL, ...)

### Arguments

`x` | a numeric vector, a matrix, a table or a data.frame. If x is a vector, a matrix or a table it is interpreted as frequencies which are to be inflated to the original list. If x is a data.frame it is interpreted as a table in frequency form (containing one or more factors and a frequency variable).
`dimnames` | the dimension names of x to be used for expanding. Can be used to expand a weight vector to its original values. If set to `NULL` (default) the dimnames of x will be used.
`type` | defines the data type generated. This allows to directly define factors or ordered factors, but also numeric values. See examples.
`rownames` | A names vector for the rownames of the resulting data.frame. If set to `NULL` (default) the names will be defined according to the table's dimnames.
`colnames` | A names vector for the colnames of the resulting data.frame. If set to `NULL` (default) the names will be defined according to the table's dimnames.
`freq` | character, the name of the frequency variable in case x is a data.frame.
`...` | further arguments passed to or from functions (not used here).

### Details

For x being a vector this reduces to `rep(..., n)` with n as vector (which is not supported by rep).

### Value

a data.frame with the detailed data (even if x was a 1-dimensional table)

### Author(s)

Andri Signorell <andri@signorell.net>

### See Also

`expand.grid`, `rep`, `gl`, `xtabs`

### Examples

    d.titanic <- Untable(Titanic)
    str(d.titanic)

    # ... not the same as:
    data.frame(Titanic)

    tab <- table(set1=sample(letters[1:5], size=40, replace=TRUE),
                 set2=sample(letters[11:15], size=40, replace=TRUE))
    Untable(tab)

    # return a numeric vector by setting type and coerce to a vector by [,]
    Untable(c(6,2,2), type="as.numeric")[,]

    # how to produce the original list based on frequencies, given as a data.frame
    d.freq <- data.frame(xtabs(Freq ~ Sex + Survived, data=Titanic))

    # a data list with each individual
    d.data <- Untable( xtabs(c(1364, 126, 367, 344) ~ .,
                 expand.grid(levels(d.freq$Sex),levels(d.freq$Survived))))
    head(d.data)

    # expand a weights vector
    Untable(c(1,4,5), dimnames=list(c("Zurich","Berlin","London")))

    # and the same with a numeric vector
    Untable(c(1,4,5), dimnames=list(c(5,10,15)), type="as.numeric")[,]
    # ... which again is nothing else than
    rep(times=c(1,4,5), x=c(5,10,15))

    # the data.frame interface
    d.freq <- data.frame(f1=c("A","A","B","B"), f2=c("C","D","C","D"), Freq=c(1,2,3,4))
    Untable(d.freq)

[Package DescTools version 0.99.25 Index]