Look for a more efficient / elegant way to pass multiple arguments to a group - using a non-standard function evaluation using dplyr. I do not want to use the operator ... but to specify functions separately.
My specific use case is a function that takes a data frame and creates a ggplot object with simpler syntax. Here is an example of the code I want to automate using my function:
my_df <- data.frame(month = sample(1:12, 1000, replace = T),
category = sample(head(letters, 3), 1000, replace = T),
approved = as.numeric(runif(1000) < 0.5))
my_df$converted <- my_df$approved * as.numeric(runif(1000) < 0.5)
my_df %>%
group_by(month, category) %>%
summarize(conversion_rate = sum(converted) / sum(approved)) %>%
ggplot + geom_line(aes(x = month, y = conversion_rate, group = category,
color = category))
I want to combine this group_by, summarize, ggplot and geom_line into a simple function so that I can feed x, y and the group, and do all the dirty work under the hood. Here is what I started to work:
plot_lines <- function(df, x, y, group) {
x <- enquo(x)
group <- enquo(group)
group_bys <- quos(!! x, !! group)
df %>%
group_by(!!! group_bys) %>%
my_smry %>%
ggplot + geom_line(aes_(x = substitute(x), y = substitute(y),
group = substitute(group), color = substitute(group)))
}
my_smry <- function(x) {
x %>%
summarize(conversion_rate = sum(converted) / sum(approved))
}
my_df %>%
plot_lines(x = month, y = conversion_rate, group = category)
, group_by : x group enquo, !! quos, unquote !!! , , . ?
, ggplot !! substitute? , , .