Stefano Stefano - 2 months ago 15
R Question

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.

Answer

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)