On Dec 30, 2014, at 3:05 PM, Michael Friendly wrote: > In a manuscript, I have the following code to illustrate dummy coding of two > factors in a contingency table. > > It works, but is surely obscured by the method I used, involving outer() to > find equalities and 0+outer() > to convert to numeric. Can someone help simplify this code to be more > comprehensible and give the > *same* result? I'd prefer a solution that uses base R. > > haireye <- margin.table(HairEyeColor, 1:2) > > haireye.df <- as.data.frame(haireye) > dummy.hair <- 0+outer(haireye.df$Hair, levels(haireye.df$Hair), `==`) > colnames(dummy.hair) <- paste0('h', 1:4) > dummy.eye <- 0+outer(haireye.df$Eye, levels(haireye.df$Eye), `==`) > colnames(dummy.eye) <- paste0('e', 1:4) > > haireye.df <- data.frame(haireye.df, dummy.hair, dummy.eye) > haireye.df > > > haireye.df > Hair Eye Freq h1 h2 h3 h4 e1 e2 e3 e4 > 1 Black Brown 68 1 0 0 0 1 0 0 0 > 2 Brown Brown 119 0 1 0 0 1 0 0 0 > 3 Red Brown 26 0 0 1 0 1 0 0 0 > 4 Blond Brown 7 0 0 0 1 1 0 0 0 > 5 Black Blue 20 1 0 0 0 0 1 0 0 > 6 Brown Blue 84 0 1 0 0 0 1 0 0 > 7 Red Blue 17 0 0 1 0 0 1 0 0 > 8 Blond Blue 94 0 0 0 1 0 1 0 0 > 9 Black Hazel 15 1 0 0 0 0 0 1 0 > 10 Brown Hazel 54 0 1 0 0 0 0 1 0 > 11 Red Hazel 14 0 0 1 0 0 0 1 0 > 12 Blond Hazel 10 0 0 0 1 0 0 1 0 > 13 Black Green 5 1 0 0 0 0 0 0 1 > 14 Brown Green 29 0 1 0 0 0 0 0 1 > 15 Red Green 14 0 0 1 0 0 0 0 1 > 16 Blond Green 16 0 0 0 1 0 0 0 1
I think the world would be a better place if you illustrated model.matrix: haireye.mtx <- cbind( model.matrix(~0+Hair, as.data.frame(haireye) ), model.matrix(~0+Eye, as.data.frame(haireye) ) ) colnames(haireye.mtx) <- gsub("[a-z]+", "", colnames(haireye.mtx) ) > haireye.df2 HB HB HR HB EB EB EH EG 1 1 0 0 0 1 0 0 0 2 0 1 0 0 1 0 0 0 3 0 0 1 0 1 0 0 0 4 0 0 0 1 1 0 0 0 5 1 0 0 0 0 1 0 0 6 0 1 0 0 0 1 0 0 7 0 0 1 0 0 1 0 0 8 0 0 0 1 0 1 0 0 9 1 0 0 0 0 0 1 0 10 0 1 0 0 0 0 1 0 11 0 0 1 0 0 0 1 0 12 0 0 0 1 0 0 1 0 13 1 0 0 0 0 0 0 1 14 0 1 0 0 0 0 0 1 15 0 0 1 0 0 0 0 1 16 0 0 0 1 0 0 0 1 -- David. > > > > -- > Michael Friendly Email: friendly AT yorku DOT ca > Professor, Psychology Dept. & Chair, Quantitative Methods > York University Voice: 416 736-2100 x66249 Fax: 416 736-5814 > 4700 Keele Street Web:http://www.datavis.ca > Toronto, ONT M3J 1P3 CANADA > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. David Winsemius Alameda, CA, USA ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.