title: Tidy data.frame with repeated column names
body: <p>I have a program that gives me data in this format</p>
  
  <pre><code>toy
                  file_path Condition Trial.Num A B  C  ID A B  C   ID  A B  C    ID
  1     root/some.extension  Baseline         1 2 3  5 car 2 1  7 bike  4 9  0 plane
  2    root/thing.extension  Baseline         2 3 6 45 car 5 4  4 bike  9 5  4 plane
  3     root/else.extension  Baseline         3 4 4  6 car 7 5  4 bike 68 7 56 plane
  4 root/uniquely.extension Treatment         1 5 3  7 car 1 7 37 bike  9 8  7 plane
  5  root/defined.extension Treatment         2 6 7  3 car 4 6  8 bike  9 0  8 plane
  </code></pre>
  
  <p><strong>My goal</strong> is to tidy the format into something that at least can be easier to finally tidy with reshape having unique column names</p>
  
  <pre><code>tidy_toy
                   file_path Condition Trial.Num  A B  C    ID
  1      root/some.extension  Baseline         1  2 3  5   car
  2     root/thing.extension  Baseline         2  3 6 45   car
  3      root/else.extension  Baseline         3  4 4  6   car
  4  root/uniquely.extension Treatment         1  5 3  7   car
  5   root/defined.extension Treatment         2  6 7  3   car
  6      root/some.extension  Baseline         1  2 1  7  bike
  7     root/thing.extension  Baseline         2  5 4  4  bike
  8      root/else.extension  Baseline         3  7 5  4  bike
  9  root/uniquely.extension Treatment         1  1 7 37  bike
  10  root/defined.extension Treatment         2  4 6  8  bike
  11     root/some.extension  Baseline         1  4 9  0 plane
  12    root/thing.extension  Baseline         2  9 5  4 plane
  13     root/else.extension  Baseline         3 68 7 56 plane
  14 root/uniquely.extension Treatment         1  9 8  7 plane
  15  root/defined.extension Treatment         2  9 0  8 plane
  </code></pre>
  
  <p>If I try to <code>melt</code> from <code>toy</code> it doesn't work because only the first ID column will get used for <code>id.vars</code> (hence everything will get tagged as cars). Identical variables will get dropped.</p>
  
  <p>Here's the dput of both tables</p>
  
  <pre><code>   structure(list(file_path = structure(c(3L, 4L, 2L, 5L, 1L), .Label = c("root/defined.extension", 
      "root/else.extension", "root/some.extension", "root/thing.extension", 
      "root/uniquely.extension"), class = "factor"), Condition = structure(c(1L, 
      1L, 1L, 2L, 2L), .Label = c("Baseline", "Treatment"), class = "factor"), 
          Trial.Num = c(1L, 2L, 3L, 1L, 2L), A = 2:6, B = c(3L, 6L, 
          4L, 3L, 7L), C = c(5L, 45L, 6L, 7L, 3L), ID = structure(c(1L, 
          1L, 1L, 1L, 1L), .Label = "car", class = "factor"), A = c(2L, 
          5L, 7L, 1L, 4L), B = c(1L, 4L, 5L, 7L, 6L), C = c(7L, 4L, 
          4L, 37L, 8L), ID = structure(c(1L, 1L, 1L, 1L, 1L), .Label = "bike", class = "factor"), 
          A = c(4L, 9L, 68L, 9L, 9L), B = c(9L, 5L, 7L, 8L, 0L), C = c(0L, 
          4L, 56L, 7L, 8L), ID = structure(c(1L, 1L, 1L, 1L, 1L), .Label = "plane", class = "factor")), .Names = c("file_path", 
      "Condition", "Trial.Num", "A", "B", "C", "ID", "A", "B", "C", 
      "ID", "A", "B", "C", "ID"), class = "data.frame", row.names = c(NA, 
      -5L))
  
  
  structure(list(file_path = structure(c(3L, 4L, 2L, 5L, 1L, 3L, 
  4L, 2L, 5L, 1L, 3L, 4L, 2L, 5L, 1L), .Label = c("root/defined.extension", 
  "root/else.extension", "root/some.extension", "root/thing.extension", 
  "root/uniquely.extension"), class = "factor"), Condition = structure(c(1L, 
  1L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 2L), .Label = c("Baseline", 
  "Treatment"), class = "factor"), Trial.Num = c(1L, 2L, 3L, 1L, 
  2L, 1L, 2L, 3L, 1L, 2L, 1L, 2L, 3L, 1L, 2L), A = c(2L, 3L, 4L, 
  5L, 6L, 2L, 5L, 7L, 1L, 4L, 4L, 9L, 68L, 9L, 9L), B = c(3L, 6L, 
  4L, 3L, 7L, 1L, 4L, 5L, 7L, 6L, 9L, 5L, 7L, 8L, 0L), C = c(5L, 
  45L, 6L, 7L, 3L, 7L, 4L, 4L, 37L, 8L, 0L, 4L, 56L, 7L, 8L), ID = structure(c(2L, 
  2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L), .Label = c("bike", 
  "car", "plane"), class = "factor")), .Names = c("file_path", 
  "Condition", "Trial.Num", "A", "B", "C", "ID"), class = "data.frame", row.names = c(NA, 
  -15L))
  </code></pre>