[R] Coding several dummy variables into a single categorical variable

Ista Zahn istazahn at gmail.com
Mon Sep 23 00:12:43 CEST 2013


Hi Mosi,

The easiest approach would be be generate native from re and usborn
directly, rather than generating dummy codes as an intermediate step:

n$native <- interaction(n[c("re", "usborn")])

This has the advantage of preserving the meanings of the levels of
native in the resulting factor, so that you don't have to remember
what 0,1,2,3 mean. If for some reason you prefer the numeric levels
you can then change them using the levels() function.

If for some reason you don't have the original variables (re and
usborn in your example), you can construct a factor from the dummy
codes as follows:

n$native <- factor(
    with(n, paste(native0, native1, native2, native3, sep = "")),
    levels = c("1000", "0100", "0010", "0001"),
    labels = c("0", "1", "2", "3"))


Best,
Ista

On Sun, Sep 22, 2013 at 2:40 PM, Mosi Ifatunji <ifatunji at gmail.com> wrote:
> Colleagues,
>
> I have generated several dummy variables:
>
> n$native0 <- 1 * (n$re=="white" & n$usborn=="yes")
> n$native1 <- 1 * (n$re=="afam" & n$usborn=="yes")
> n$native2 <- 1 * (n$re=="carib" & n$usborn=="yes")
> n$native3 <- 1 * (n$re=="carib" & n$usborn=="no")
>
> I would now like to combine these into a single categorical variable where the new variable would be n$native.
>
> And values of native would be 0 through 3, where n$native0 would be a 0 value on n$native, n$native1 would be a 1 value on n$native etc.
>
> Any help would be greatly appreciated.
>
> -- Mosi
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list