dplyr:分组计数的平均值

3
我正在尝试使用dplyr查找数据框中变量的平均长度:
x <- data %>% group_by(Date, `% Bucket`) %>% summarise(count = n())

Date          % Bucket count
(date)    (fctr) (int)
1  2015-01-05       <=1  1566
2  2015-01-05    (1-25]   421
3  2015-01-05   (25-50]   461
4  2015-01-05   (50-75]   485
5  2015-01-05  (75-100]   662
6  2015-01-05 (100-150]  1693
7  2015-01-05      >150 12359
8  2015-01-13       <=1  1608
9  2015-01-13    (1-25]   441
10 2015-01-13   (25-50]   425

如何使用dplyr按年份在每个% Bucket上进行聚合并计算平均值?

in base:
x <- as.data.frame(x)
aggregate(count ~ `% Bucket`, data = x, FUN=mean)

% Bucket      count
1       <=1  2609.5294
2    (1-25]   449.0000
3   (25-50]   528.7059
4   (50-75]   593.2157
5  (75-100]   763.0000
6 (100-150]  1758.6667
7      >150 12457.9216

聚合函数将采用dplyr在每个桶上发现的计数,并对它们进行求和,除以包含该"% Bucket"变量的行数,并给出结果。但是,如何使用dplyr完成这个任务呢?这不是关于解决问题,而是了解在这种情况下如何使用dplyr包。

这种类型的另一个例子是summarise每个group_by变量的n(),并列出该变量在52周中的最小长度“count”。

我感到困惑,因为dplyr似乎是建立在找到列中值的平均值基础上的,但是在这里,我正在统计给定列中变量的行出现次数,并试图找到其平均值、最小值、最大值等信息。


2
预期输出是什么?如果是使用aggregate的那个,那么应该是 x %>% group_by(% Bucket) %>% summarise(Mean= mean(count)) - akrun
1
@akrun 是的,预期输出是聚合结果,你提出的答案正是我想要的,很有道理。 - Ryan Castner
1
注意:将函数名(count)用作变量是不好的编程习惯。如有必要,请考虑使用一些前缀,例如my_count - Nettle
1个回答

5
我们可以使用 dplyr 方法。
library(dplyr)
x %>%
   group_by(`% Bucket`) %>%
   summarise(count= mean(count))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接