multi_summ <- function(..., fun, prefix) {
pars <- as.list(match.call()[-1])
vars <- pars[names(pars)==""]
funs <- pars[["fun"]]
eval <-
lapply(vars,
function(var)
lazyeval::interp(~ a %>% b, a = as.name(var), b=funs[[1]])
)
vars %<>% as.character
if(any(names(pars)=="prefix")) vars <- paste0(prefix,as.character(vars))
setNames(eval, vars )
}
summarize_by2 <- function(..., fun, prefix) {
pars <- as.list(match.call()[-1])
vars <- pars[names(pars)==""]
funs <- pars[["fun"]]
eval <- lapply(vars, function(var) paste(var, "%>%", funs[[1]]) )
vars %<>% as.character
if(any(names(pars)=="prefix")) vars <- paste0(prefix,as.character(vars))
setNames(eval, vars )
## example
iris %>%
summarize_by2(df=.,Petal.Length, Sepal.Length, fun=sum(.))
iris %>%
group_by(Species) %>%
summarize(
!!!summarize_by2(Petal.Length, Sepal.Length, fun=mean(.), prefix="mean_"),
!!!summarize_by2(Petal.Length, Sepal.Length, fun=mean(.), prefix="sum_")
)
iris %>%
group_by(Species) %>%
summarize_(
.dots = c(
multi_summ(Petal.Length, Sepal.Length, fun=sum(.), prefix="sum_"),
multi_summ(Petal.Length, Sepal.Length, fun=mean(.), prefix="mean_")
)
)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.