Does anyone know a quick way to select all-but columns (or all-but-few dplyr::group_by
) when using dplyr::group_by
? Ultimately, I just want to aggregate over all the individual rows after deleting several selection columns, but I don't want to explicitly list all the grouping columns each time (since they are often added and removed in my analysis).
Example:
> df <- data_frame(a = c(1,1,2,2), b = c("foo", "foo", "bar", "bar"), c = runif(4)) > df Source: local data frame [4 x 3] abc (dbl) (chr) (dbl) 1 1 foo 0.95460749 2 1 foo 0.05094088 3 2 bar 0.93032589 4 2 bar 0.40081121
Now I want to aggregate by a
and b
, so I can do this:
> df %>% group_by(a, b) %>% summarize(mean(c)) Source: local data frame [2 x 3] Groups: a [?] ab mean(c) (dbl) (chr) (dbl) 1 1 foo 0.5027742 2 2 bar 0.6655686
Great. But I really would like to do something like just not c
, similar to dplyr::select(-c)
:
> df %>% select(-c) Source: local data frame [4 x 2] ab (dbl) (chr) 1 1 foo 2 1 foo 3 2 bar 4 2 bar
But group_by
can apply expressions, so the equivalent does not work:
> df %>% group_by(-c) %>% summarize(mean(c)) Source: local data frame [4 x 2] -c mean(c) (dbl) (dbl) 1 -0.95460749 0.95460749 2 -0.93032589 0.93032589 3 -0.40081121 0.40081121 4 -0.05094088 0.05094088
Does anyone know if I just skipped a basic function or shortcut to help me do this quickly?
Usage example: if df
unexpectedly receives a new column d
, I would like the code downstream to now be combined using unique combinations of a
, b
and d
, without me explicitly adding d
to the group_by
call.)