我有以下数据框:
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
。按“Day”分组后,我们通过取“Area”的first
值、“Station”的值、“Flow”最大的地方来汇总
数据,得到max
“流量”以及“面积”的平均值
。
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 评论
关于r - 将数据框中的行分组,取最大值并计算组均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38503748/