If you are just looking to collapse the dummy variables into two factor variables, the following will work.
## Generate some example data set.seed(1234) n <- 100 # Generate outcome outcome <- rbinom(n, 3, 0.5) colnames(exposures) <- paste("V", seq(1:10), sep = "") #Generate dummy variables for A and B A <- t(apply(matrix(nrow = 100, ncol = 5), 1, function(x) { sample(c(1, 0, 0, 0, 0)) })) B <- t(apply(matrix(nrow = 100, ncol = 5), 1, function(x) { sample(c(1, 0, 0, 0, 0)) })) # Combine into data frame dat <- data.frame(outcome, A, B) names(dat) <- c('outcome', paste("A", seq(1:5), sep = ""), paste("B", seq(1:5), sep = "")) head(dat) ## Collapse dummies to factor variable A <- apply(dat, 1, function(x) { A <- x[2:6] A.names <- names(x[2:6]) A.value <- A.names[A==1] return(A.value) }) B <- apply(dat, 1, function(x) { B <- x[7:11] B.names <- names(x[7:11]) B.names B.value <- B.names[B==1] return(B.value) }) # Combine into new data frame dat.new <- data.frame(dat$outcome, A, B) head(dat.new) Jeremy
______________________________________________ R-help@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.