计算子组的平均值[重复项]

问题描述 投票:0回答:1

此问题已经在这里有了答案:

我想通过计算每月每周总和的平均值来计算月份值。

例如对于6月(06)和距离10,我有一周总和1(2017_28),6(2017_29)和1(2017_31),我想对这几周进行汇总,以得出总月数8和平均值2.6667(8:3)。

我有一个月的总和,但我不知道如何计算平均值

df %>% 
  group_by(year_month, distance) %>%
  mutate(monthsum = sum(weeksum))
   year year_month month year_week distance weeksum
1   2017    2017_05    05   2017_21       15       4
2   2017    2017_05    05   2017_21       10       1
3   2017    2017_05    05   2017_22        5       5
4   2017    2017_05    05   2017_22        0       1
5   2017    2017_06    06   2017_22        0      11
6   2017    2017_06    06   2017_23       20       7
7   2017    2017_06    06   2017_23        0       6
8   2017    2017_07    07   2017_28       10       1
9   2017    2017_07    07   2017_28        0       1
10  2017    2017_07    07   2017_29       10       6
11  2017    2017_07    07   2017_29        5       3
12  2017    2017_07    07   2017_30        0      12
13  2017    2017_07    07   2017_31       10       1
14  2017    2017_07    07   2017_31        0       7

这就是我想要的:

   year year_month month year_week distance monthsum    mean
1   2017    2017_05    05   2017_21       15       4      4
2   2017    2017_05    05   2017_21       10       1      1
3   2017    2017_05    05   2017_22        5       5      5
4   2017    2017_05    05   2017_22        0       1      1
5   2017    2017_06    06   2017_22        0      17    8.5
6   2017    2017_06    06   2017_23       20       7      7
7   2017    2017_07    07   2017_28       10       8 2.6667
8   2017    2017_07    07   2017_28        0      20 6.6667
9  2017    2017_07    07   2017_29        5       3      3


r plyr
1个回答
0
投票

首先,我希望您使用dplyr而不是plyr是最新的。

也可以像这样简单地使用mean()函数扩展您的语句:

df %>% 
   group_by(year_month, distance) %>% 
   mutate(monthsum = sum(weeksum), monthmean = mean(weeksum))

您也可以使用summarize而不是mutate以获得更好的视图:

df %>% 
   group_by(year_month, distance) %>% 
   summarize(monthsum = sum(weeksum), monthmean = mean(weeksum))
© www.soinside.com 2019 - 2024. All rights reserved.