[R] Recode factor into binary factor-level vars

Dimitris Rizopoulos d.rizopoulos at erasmusmc.nl
Sat Mar 7 14:57:32 CET 2009


one way is:

set.seed(20)
l <- sample(rep.int(c("locA", "locB", "locC", "locD"), 100), 10, replace=T)

f <- factor(l, levels = paste("loc", LETTERS[1:4], sep = ""))
m <- as.data.frame(model.matrix(~ f - 1))
names(m) <- levels(f)
m


I hope it helps.

Best,
Dimitris


soeren.vogel at eawag.ch wrote:
> How to I "recode" a factor into a binary data frame according to the 
> factor levels:
> 
> ### example:start
> set.seed(20)
> l <- sample(rep.int(c("locA", "locB", "locC", "locD"), 100), 10, replace=T)
> # [1] "locD" "locD" "locD" "locD" "locB" "locA" "locA" "locA" "locD" "locA"
> ### example:end
> 
> What I want in the end is the following:
> 
> m$locA: 0, 0, 0, 0, 0, 1, 1, 1, 0, 1
> m$locB: 0, 0, 0, 0, 1, 0, 0, 0, 0, 0
> m$locC: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
> m$locD: 1, 1, 1, 1, 0, 0, 0, 0, 1, 0
> 
> Instead of 0, NA's would also be fine.
> 
> Thanks, Sören
> 

-- 
Dimitris Rizopoulos
Assistant Professor
Department of Biostatistics
Erasmus University Medical Center

Address: PO Box 2040, 3000 CA Rotterdam, the Netherlands
Tel: +31/(0)10/7043478
Fax: +31/(0)10/7043014




More information about the R-help mailing list