对数据帧中的行进行分组,获取最大值并计算组的平均值

时间:2016-07-21 12:01:56

标签: r dataframe rows lubridate

我有以下数据框:

df <- read.table(text = "
    Station    Area  Day       Flow
1     21009 4390.00  1913   725.661
2     24005  178.50  1913    25.540
3     25009 1264.00  1913   318.481
4     27002  758.90  1913   230.556
5     38003  133.90  1913     2.823
70    37006  228.40  9526    68.140
71    37008  190.30  9526    38.175
72    37009   60.70  9526    12.200
73    37018   47.90  9526    19.209
156   38021   42.20  12551    15.330
157   39093  117.60  12551    33.090
158   40004  206.00  12551    49.019
159   41005  180.90  12551    63.574
188   41006   87.80  14329    67.130
189   41011  154.00  14329   125.000
190   41012   93.30  14329    43.640
191   41014  379.00  14329   218.000
192   41015   58.30  14329     5.080", header = TRUE)

我想应用dplyr包(应该是最快捷的方式),以便按行Day对行进行分组,然后取Area的最大值和平均值},同时在其他2列中保留相应的观察结果。

我的输出应该是:

    Station    Area  Day        Flow  Group_mean
1     21009 4390.00  1913    725.661    1345.06
70    37006  228.40  9526     68.140     131.83 
158   40004  206.00  12551    49.019     136.68
191   41014  379.00  14329   218.000     154.48

2 个答案:

答案 0 :(得分:4)

我们可以使用dplyr。按照&#39; Day&#39;进行分组后,我们summarise采用&{39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;其中&#39; Flow&#39;是最大值,获得first&#39;流量&#39;以及&#39; Area&#39;。{/ p>的max

mean

编辑:基于@agenis和@Sotos评论

答案 1 :(得分:3)

你可以使用sqldf by

library(sqldf)
sqldf("select Station, max(Area), Day, Flow, sum(Area)/count(*) as mean from df group by Day")