Skip to content

Recoding multiple TRUE/FALSE columns into a single list of TRUE columns

3 messages · jim holtman, David Epstein

#
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
#
Try this:
+ 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)
+     indx <- which(.row == 1)
+     if (length(indx) > 0) return(paste(names(x)[indx], collapse = ','))
+     else return(NA)
+ })
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

        
On Sun, Dec 25, 2011 at 7:30 PM, David Epstein <davideps at umich.edu> wrote:

  
    
#
Jim,

Wow, that does it! I think I can use strsplit and unlist 
to convert the string of row names into a R list.

thank you!

-david