Search code examples
rdplyrgroup-summaries

R - group data frame from a variable


I want to set the column for grouping a data frame into a variable and then group and summarise the data frame based on it, i.e.

require(dplyr)
var <- colnames(mtcars)[10]
summaries <- mtcars %>% dplyr::group_by(var) %>% dplyr::summarise_each(funs(mean))

such that I can simply change var and use the second line without changing anything. Unfortunately my solution does not work as group_by asks the column name and not a variable.


Solution

  • Use group_by_, which takes arguments as character strings:

    require(dplyr)
    var <- colnames(mtcars)[10]
    summaries <- mtcars %>% dplyr::group_by_(var) %>% dplyr::summarise_each(funs(mean))
    

    (Maybe resources on standard vs non-standard evaluation would be of interest: http://adv-r.had.co.nz/Computing-on-the-language.html)