Home > Software engineering >  Is it possible to use group_by in a function for more than one variable?
Is it possible to use group_by in a function for more than one variable?

Time:03-01

I created a function that aggregates the numeric values in a dataset, and I use a group_by() function to group the data first. Below is an example of what the code I wrote looks like. Is there a way I can group_by() more than one variable without having to create another input for the function?

agg <- function(data, group){ aggdata <- data %>% group_by({{group}})} %>% select_if(function(col) !is.numeric(col) & !is.integer(col)) %>% summarise_if(is.numeric, sum, na.rm = TRUE) return(aggdata)

CodePudding user response:

Your code has (at least) a misplaced curly brace, and it's a bit difficult to see what you're trying to accomplish without a reproducible example and desired result.

It is possible to pass a vector of variable names to group_by(). For example, the following produces the same result as mtcars %>% group_by(cyl, gear):

my_groups <- c("cyl", "gear")
mtcars %>% group_by(!!!syms(my_groups))

Maybe you could use this syntax within your function definition.

  • Related