【发布时间】:2018-03-05 21:49:04
【问题描述】:
我有一个大数据框“表”为:
Year Month Model Scenario Longitude Latitude tas_month pr_month
1 2000 1 ccsm4_r1i1p1 rpc45 9.57 -84.53 24.20 40.63
2 2000 2 ccsm4_r1i1p1 rpc45 9.57 -84.53 25.05 54.20
3 2000 3 ccsm4_r1i1p1 rpc45 9.57 -84.53 25.19 36.87
4 2000 4 ccsm4_r1i1p1 rpc45 9.57 -84.53 25.44 126.47
5 2000 5 ccsm4_r1i1p1 rpc45 9.57 -84.53 25.36 282.44
6 2000 6 ccsm4_r1i1p1 rpc45 9.57 -84.53 25.71 284.68
并且我想使用group_by(Month, Longitude, Latitude, Model, Scenario) 创建一个新的数据框,该数据框在五年内的每个时期都具有mean(tas_month) 和mean(pr_month)。这个新数据框还必须有一个新列,其中每一行都有这些值所属的 5 年期间的值。
Period Month Model Scenario Longitude Latitude tas_month pr_month
1 1 1 ccsm4_r1i1p1 rpc45 9.57 -84.53 24.20 40.63
2 2 2 ccsm4_r1i1p1 rpc45 9.57 -84.53 25.05 54.20
3 3 3 ccsm4_r1i1p1 rpc45 9.57 -84.53 25.19 36.87
4 4 4 ccsm4_r1i1p1 rpc45 9.57 -84.53 25.44 126.47
5 5 5 ccsm4_r1i1p1 rpc45 9.57 -84.53 25.36 282.44
6 6 6 ccsm4_r1i1p1 rpc45 9.57 -84.53 25.71 284.68
我已经创建了一个以五年为周期的向量:
fiveyears <- seq(2000, 2100, 5)
但仍然无法弄清楚如何计算平均值。我在想这样的“伪”代码,但它仍然很粗糙:
for (i in seq_along(fiveyears)){
table %>% filter(Year < (i+5) & Year >= i) %>%
group_by(Month, Longitude, Latitude, Model, Scenario) %>%
summarise(pr_month = mean(pr_month), tas_month = mean(tas_month))
非常感谢任何帮助。
【问题讨论】: