title: Group by multiple columns in dplyr, using string vector input
body: <p>I'm trying to transfer my understanding of plyr into dplyr, but I can't figure out how to group by multiple columns.</p>
  
  <pre><code># make data with weird column names that can't be hard coded
  data = data.frame(
    asihckhdoydkhxiydfgfTgdsx = sample(LETTERS[1:3], 100, replace=TRUE),
    a30mvxigxkghc5cdsvxvyv0ja = sample(LETTERS[1:3], 100, replace=TRUE),
    value = rnorm(100)
  )
  
  # get the columns we want to average within
  columns = names(data)[-3]
  
  # plyr - works
  ddply(data, columns, summarize, value=mean(value))
  
  # dplyr - raises error
  data %.%
    group_by(columns) %.%
    summarise(Value = mean(value))
  #&gt; Error in eval(expr, envir, enclos) : index out of bounds
  </code></pre>
  
  <p>What am I missing to translate the plyr example into a dplyr-esque syntax?</p>
  
  <p><strong>Edit 2017</strong>: Dplyr has been updated, so a simpler solution is available. See the currently selected answer.</p>