title: R: Convert binary categorical variables to long data format
body: <pre><code>mydata &lt;- structure(list(id = 1:10, cafe = c(0, 1, 0, 0, 1, 1, 0, 0, 1, 
  1), playground = c(1, 1, 1, 1, 1, 1, 0, 1, 1, 0), classroom = c(0, 
  0, 0, 0, 0, 1, 1, 1, 1, 1), gender = structure(c(2L, 2L, 2L, 
  2L, 2L, 2L, 1L, 2L, 1L, 2L), .Label = c("Female", "Male"), class = "factor"), 
      job = structure(c(2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 1L), .Label = c("Student", 
      "Teacher"), class = "factor")), .Names = c("id", "cafe", 
  "playground", "classroom", "gender", "job"), row.names = c(NA, 
  -10L), class = "data.frame")
  
  &gt; mydata
     id cafe playground classroom gender     job
  1   1    0          1         0   Male Teacher
  2   2    1          1         0   Male Student
  3   3    0          1         0   Male Teacher
  4   4    0          1         0   Male Student
  5   5    1          1         0   Male Teacher
  6   6    1          1         1   Male Teacher
  7   7    0          0         1 Female Teacher
  8   8    0          1         1   Male Teacher
  9   9    1          1         1 Female Teacher
  10 10    1          0         1   Male Student
  </code></pre>
  
  <p>My desired long format data set should look like:</p>
  
  <pre><code>id      response    gender        job
  1     playground      Male    Teacher
  2           cafe      Male    Student
  2     playground      Male    Student
  3     playground      Male    Teacher
  ...
  </code></pre>
  
  <p>Essentially, the <code>response</code> column corresponds to which of the cafe, playground, and classroom columns have a value of 1. I've looked into several examples <a href="https://stats.idre.ucla.edu/r/faq/how-can-i-reshape-my-data-in-r/" rel="nofollow noreferrer">here</a> and <a href="https://stackoverflow.com/questions/5890584/how-to-reshape-data-from-long-to-wide-format">here</a>, but they do not deal with binary data columns. </p>