在R语言中对Dhaka数据集按日期计算滑动3天降水量求和
解决Dhaka数据集的3天滚动降水量求和问题
嘿,这个需求其实很常见,用数据分析工具就能轻松实现!我给你分两种常用场景来演示:
用Python Pandas处理(推荐用于批量/自动化分析)
Pandas的rolling函数专门用来处理这类滚动窗口计算,完全符合你的需求:
import pandas as pd # 先构造你的Dhaka数据集 data = { 'time': ['01/01/1998', '01/02/1998', '01/03/1998', '01/04/1998', '01/05/1998', '01/06/1998'], 'precipitation': [5, 2, 4, 6, 7, 11] } df = pd.DataFrame(data) # 把time列转换成标准日期格式(可选,但能避免后续日期相关的问题) df['time'] = pd.to_datetime(df['time'], format='%d/%m/%Y') # 核心:计算当天及前两天的滚动求和,不足3天时取现有数据的和 df['3day_precip_sum'] = df['precipitation'].rolling(window=3, min_periods=1).sum() # 为了直观展示计算逻辑,我们可以加个注释列 df['calculation_detail'] = [ '5', '5+2', '5+2+4', '2+4+6', '4+6+7', '6+7+11' ] # 查看结果 print(df)
运行后会得到这样的输出:
time precipitation 3day_precip_sum calculation_detail 0 1998-01-01 5 5.0 5 1 1998-01-02 2 7.0 5+2 2 1998-01-03 4 11.0 5+2+4 3 1998-01-04 6 12.0 2+4+6 4 1998-01-05 7 17.0 4+6+7 5 1998-01-06 11 24.0 6+7+11
关键参数解释
window=3:指定滚动窗口包含当前行和前两行,正好对应「当天及前两天」的范围min_periods=1:允许窗口中最少有1个数据就计算求和,这样前两行(窗口不足3个数据时)不会返回空值,而是取现有天数的和
用Excel手动处理(适合小数据集快速计算)
如果你的数据在Excel里,也可以用简单的公式实现:
- 假设降水量数据在B列,日期在A列
- 第1行数据(B2单元格):在C2输入
=B2,直接取当天值 - 第2行数据(B3单元格):在C3输入
=SUM(B2:B3),计算前两天的和 - 第3行及以后(从B4开始):在C4输入
=SUM(B2:B4),然后下拉填充公式,Excel会自动调整窗口范围,实现「当天及前两天」的求和
内容的提问来源于stack exchange,提问作者Farah
相关产品推荐
相关产品推荐

