我有以下数据框:
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
我们可以使用dplyr
。在按“天”分组后,我们summarise
通过获取first
“面积”的值,“站”的值(其中“流量”最大)的数据来获得max
“流量”以及mean
“面积”的值。
library(dplyr)
df %>%
group_by(Day) %>%
summarise(Area1 = max(Area),
Station = Station[which.max(Flow)],
Flow = max(Flow),
Group_mean = mean(Area)) %>%
rename(Area = Area1)
# Day Area Station Flow Group_mean
# <int> <dbl> <int> <dbl> <dbl>
#1 1913 4390.0 21009 725.661 1345.060
#2 9526 228.4 37006 68.140 131.825
#3 12551 206.0 41005 63.574 136.675
#4 14329 379.0 41014 218.000 154.480
编辑:基于@agenis和@Sotos注释
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句