R: Generate Dummy Codes for a Factor

Dummy {DescTools} | R Documentation

## Generate Dummy Codes for a Factor

### Description

Generate a matrix of dummy codes (class indicators) for a given factor.

### Usage

    Dummy(x, method = c("treatment", "sum", "helmert", "poly", "full"),
          base = 1, levels = NULL)

### Arguments

`x` | factor or vector of classes for cases.
`method` | defines the method of the contrasts being formed. Can be one out of `"treatment"`, `"sum"`, `"helmert"`, `"poly"`, `"full"`, whereas `"treatment"` is the default one. Abbreviations are accepted. The option `"full"` returns a full set of class indicators, say a dummy factor for each level of x. Note that this would be redundant for `lm()` and friends!
`base` | an integer specifying which group is considered the baseline group.
`levels` | an optional vector of the values (as character strings) that `x` might have taken. The default is the unique set of values taken by as.character(x), sorted into increasing order of x. This is directly passed on to `factor`.

### Details

For reverting dummy codes see the approach in the examples below.

### Value

a matrix with the dummy codes. The number of rows correspond to the number of elements in `x` and the number of columns to the number of its levels - 1, respectively to the number of levels given as argument -1.

When `method = "full"` is chosen the number of columns will correspond to the number of levels.

### Author(s)

Andri Signorell <andri@signorell.net>

### References

Venables, W N and Ripley, B D (2002): Modern Applied Statistics with S. Fourth edition. Springer.

### See Also

`model.frame`, `contrasts`, `class.ind` in the package nnet

### Examples

    x <- c("red","blue","green","blue","green","red","red","blue")
    Dummy(x)
    Dummy(x, base=2)

    Dummy(x, method="sum")

    y <- c("Max","Max","Max","Max","Max","Bill","Bill","Bill")

    Dummy(y)
    Dummy(y, base="Max")

    Dummy(y, base="Max", method="full")

    # "Undummy" (revert the dummy coding)
    m <- Dummy(y, method="full")
    m
    z <- apply(m, 1, function(x) colnames(m)[x==1])
    z
    identical(y, as.vector(z))

    m <- Dummy(y)
    m
    z <- apply(m, 1, function(x) ifelse(sum(x)==0, attr(m,"base"), colnames(m)[x==1]))
    z

[Package DescTools version 0.99.35 Index]