df <- data.frame(
a.1 = rep(1, 10),
a.2 = rep(c(1,2), 5),
a.3 = rep(c(1,2), 5),
a.4 = rep(c(1,2), 5),
a.5 = rep(c(1,2), 5),
b.1 = runif(10),
b.2 = runif(10),
b.3 = runif(10),
c.1 = runif(10)
)
library(dplyr)
df %>% group_by(a.1, a.2, a.3, a.4, a.5) %>%
summarise_each(funs(sum), starts_with("b"))
grp_cols <- names(df)[names(df) %>% str_sub(1,1) == "a"]
dots <- lapply(grp_cols, as.symbol)
df %>%
group_by_(.dots=dots) %>%
summarise_each(funs(sum), starts_with("b"))
df %>% group_by(starts_with("a")) %>%
summarise_each(funs(sum), starts_with("b"))