我有以下数据框:
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
答案 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")