title: merge/combine columns with same name but incomplete data
body: <p>I have two data frames that have some columns with the same names and others with different names. The data frames look something like this:</p>
  
  <pre><code>df1
        ID hello world hockey soccer
      1  1    NA    NA      7      4
      2  2    NA    NA      2      5
      3  3    10     8      8     23
      4  4     4    17      5     12
      5  5    NA    NA      3     43
  
  df2    
        ID hello world football baseball
      1  1     2     3       43        6
      2  2     5     1       24       32
      3  3    NA    NA        2       23
      4  4    NA    NA        5       15
      5  5     9     7       12       23
  </code></pre>
  
  <p>As you can see, in 2 of the shared columns ("hello" and "world"), some of the data is in one of the data frames and the rest is in the other.</p>
  
  <p>What I am trying to do is (1) merge the 2 data frames by "id", (2) combine all the data from the "hello" and "world" columns in both frames into 1 "hello" column and 1 "world" column, and (3) have the final data frame also contain all of the other columns in the 2 original frames ("hockey", "soccer", "football", "baseball"). So, I want the final result to be this:</p>
  
  <pre><code>  ID hello world hockey soccer football baseball
  1  1     2     3      7      4        43       6
  2  2     5     3      2      5        24      32
  3  3    10     8      8     23         2      23
  4  4     4    17      5     12         5      15
  5  5     9     7      3     43        12      23
  </code></pre>
  
  <p>I'm pretty new at R so the only codes I've tried are variations on <code>merge</code> and I've tried the answer I found here, which was based on a similar question: <a href="https://stackoverflow.com/questions/9577264/r-merging-copies-of-the-same-variable">R: merging copies of the same variable</a>. However, my data sets are actually much bigger than what I'm showing here (there's about 20 matching columns (like "hello" and "world") and 100s of non-matching ones (like "hockey" and "football")) so I'm looking for something that won't require me to write them all out manually.</p>
  
  <p>Any idea if this can be done? I'm sorry I can't provide a sample of my efforts, but I really don't know where to start besides:</p>
  
  <pre><code>mydata &lt;- merge(df1, df2, by=c("ID"), all = TRUE)
  </code></pre>
  
  <p>To reproduce the data frames:</p>
  
  <pre><code>df1 &lt;- structure(list(ID = c(1L, 2L, 3L, 4L, 5L), hellow = c(2, 5, NA, NA, 9), 
         world = c(3, 1, NA, NA, 7), football = c(43, 24, 2, 5, 12), 
         baseball = c(6, 32, 23, 15, 23)), .Names = c("ID", "hello", "world", 
         "football", "baseball"), class = "data.frame", row.names = c(NA, -5L)) 
  
  df2 &lt;- structure(list(ID = c(1L, 2L, 3L, 4L, 5L), hellow = c(NA, NA, 10, 4, NA), 
         world = c(NA, NA, 8, 17, NA), hockey = c(7, 2, 8, 5, 3), 
         soccer = c(4, 5, 23, 12, 43)), .Names = c("ID", "hello", "world", "hockey", 
         "soccer"), class = "data.frame", row.names = c(NA, -5L))
  </code></pre>