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
我正在搜索以按组条件计算函数。 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