David Epstein
2011-Dec-26 00:30 UTC
[R] Recoding multiple TRUE/FALSE columns into a single list of TRUE columns
Hi everyone, I need to recode multiple columns in a dataframe into a single column in a variety of different ways. Often the values will be TRUE/FALSE and I want a list of the columns that are true as in the Result column below: P1 P2 P3 P4 Result 1 0 0 1 1 P3,P4 2 0 1 1 1 P2,P3,P4 3 1 0 0 0 P1 4 0 0 0 0 NA 5 1 1 1 1 P1,P2,P3,P4 I'm still relatively new to R and tend to think in for loops. I'm sure there exists a more concise and elegant solution. Any advice? Happy holidays, -david
jim holtman
2011-Dec-26 01:38 UTC
[R] Recoding multiple TRUE/FALSE columns into a single list of TRUE columns
Try this:> x <- read.table(text = " P1 P2 P3 P4+ 1 0 0 1 1 + 2 0 1 1 1 + 3 1 0 0 0 + 4 0 0 0 0 + 5 1 1 1 1 ", header = TRUE)> labs <- apply(x, 1, function(.row){+ indx <- which(.row == 1) + if (length(indx) > 0) return(paste(names(x)[indx], collapse = ',')) + else return(NA) + })> x$result <- labs > xP1 P2 P3 P4 result 1 0 0 1 1 P3,P4 2 0 1 1 1 P2,P3,P4 3 1 0 0 0 P1 4 0 0 0 0 <NA> 5 1 1 1 1 P1,P2,P3,P4>On Sun, Dec 25, 2011 at 7:30 PM, David Epstein <davideps at umich.edu> wrote:> Hi everyone, > > I need to recode multiple columns in a dataframe into a single column in a > variety of different ways. ?Often the values will be TRUE/FALSE and I want a > list of the columns that are true as in the Result column below: > > ? ?P1 ? P2 ? P3 ? P4 ? Result > 1 ? 0 ? ?0 ? ?1 ? ?1 ? ?P3,P4 > 2 ? 0 ? ?1 ? ?1 ? ?1 ? ?P2,P3,P4 > 3 ? 1 ? ?0 ? ?0 ? ?0 ? ?P1 > 4 ? 0 ? ?0 ? ?0 ? ?0 ? ?NA > 5 ? 1 ? ?1 ? ?1 ? ?1 ? ?P1,P2,P3,P4 > > I'm still relatively new to R and tend to think in for loops. I'm sure there > exists a more concise and elegant solution. Any advice? > > Happy holidays, > -david > > ______________________________________________ > 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.-- Jim Holtman Data Munger Guru What is the problem that you are trying to solve? Tell me what you want to do, not how you want to do it.