【问题标题】:R group_by multiple conditionnal aggregation functions dplyrR group_by 多个条件聚合函数 dplyr
【发布时间】:2020-01-07 02:49:28
【问题描述】:

我正在搜索在一个组条件下计算函数。 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),则会创建另一列。

任何帮助将不胜感激。

【问题讨论】:

    标签: r dataframe group-by dplyr summarize


    【解决方案1】:

    你可以这样做:

    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
    

    【讨论】:

    • 正是我需要的,非常感谢。我知道我的试验对于我想要的来说太复杂了。
    猜你喜欢
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 2021-04-17
    • 2014-06-04
    相关资源
    最近更新 更多