R group_by 多个条件聚合函数 dplyr

R group_by multiple conditionnal aggregation functions dplyr

我正在搜索以按组条件计算函数。 agg_name 描述了要评估的函数,这个向量的长度可以是 1 到 N。这里 N = 5,所有的可能性都是已知的,但我更喜欢一般的东西。

agg_name <- c("Sum = sum(val)", "Mean = mean(val)")

df <- data.frame(dateDay = Sys.Date()-rep(0:2, each = 3), val = 1:9)

目前尝试次数:

df <- df %>% 
  group_by(dateDay) %>% 
  summarise(eval(paste(agg_name, collapse = ",")))

预期输出:

     dateDay Sum Mean
1 2019-09-04   6    2
2 2019-09-03   15   5
3 2019-09-02   24   8

如果 agg_name 包含 Max = max(val),则会创建另一列。

如有任何帮助,我们将不胜感激。

你可以这样做:

agg_name <- c(Sum = sum, Mean = mean)

df %>% 
 group_by(dateDay) %>% 
 summarise_all(agg_name)

  dateDay      Sum  Mean
  <date>     <int> <dbl>
1 2019-09-02    24     8
2 2019-09-03    15     5
3 2019-09-04     6     2