When I use group_by and summarise in dplyr, I can naturally apply different summary functions to different variables. For instance:
library(tidyverse)
Since your question is about "summarise_at";
Here is what my idea is:
df %>% group_by(category) %>% summarise_at(vars(x, y, z), funs(mean = mean, sd = sd, min = min), na.rm = TRUE)