使用Rolling Window Slider按10天增量分组计算气象数据平均值的问题求助
Rolling Window Slider按10天增量分组计算气象数据平均值的问题求助
大家好,我现在遇到一个滑动窗口计算气象数据的问题,想请教下各位:
我需要基于指定日期,计算之后10天增量区间的平均温度,具体是三个区间:
- 指定日期后的第1-10天的平均温度
- 指定日期后的第11-20天的平均温度
- 指定日期后的第21-30天的平均温度
下面是我的示例数据集:
historicalWeatherSummary <- structure(list(Historical_date = structure(c(3286, 3287, 3288, 3289, 3290, 3291), class = "Date"), daily_min_temp_daytime = c(25.29, 33.28, 39.33, 14.02, -2.47, 1.02), daily_min_temp_nighttime = c(25.45, 29.82, 36.66, 6.3, -2.72, 1.18)), class = c("grouped_df", "tbl_df", "tbl", "data.frame"), row.names = c(NA, -6L), groups = structure(list( Historical_date = structure(c(3286, 3287, 3288, 3289, 3290, 3291), class = "Date"), .rows = structure(list(1L, 2L, 3L, 4L, 5L, 6L), ptype = integer(0), class = c("vctrs_list_of", "vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame" ), row.names = c(NA, -6L), .drop = TRUE))
我尝试用slide_dbl来实现,写了下面的代码,但显然没有达到预期效果:
tenDayWindows <- historicalWeatherSummary %>% ungroup() %>% arrange(Historical_date) %>% mutate(`1to10_avg_min_daytime_temp` = slide_dbl(daily_min_temp_daytime, ~mean(.x), .after = 10, .complete = TRUE), `1to10_avg_min_nighttime_temp` = slide_dbl(daily_min_temp_nighttime, ~mean(.x), .after = 10, .complete = TRUE), `11to20_avg_min_daytime_temp` = slide_dbl(daily_min_temp_daytime, ~mean(.x), .step = 10, .after = 10, .complete = TRUE), `11to20_avg_min_nighttime_temp` = slide_dbl(daily_min_temp_nighttime, ~mean(.x), .after = 10, .step = 10, .complete = TRUE), `21to30_avg_min_daytime_temp` = slide_dbl(daily_min_temp_daytime, ~mean(.x), .after = 10, .step = 20, .complete = TRUE), `21to30_avg_min_nighttime_temp` = slide_dbl(daily_min_temp_nighttime, ~mean(.x), .after = 10, .step = 20, .complete = TRUE), )
我的思路是:通过.step参数跳过前10天、20天,再用.after=10取接下来的10天计算平均值,但实际运行后没有得到对应区间的结果。有没有大佬能帮我指出问题所在,或者给我一个正确的实现方向?
(编辑补充:原提问附有助理解的示例示意图)
备注:内容来源于stack exchange,提问作者broccolifarmer
相关产品推荐
相关产品推荐

