You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中实现分组指标滚动求和:城市月度销售3个月滚动求和需求

嘿,这个滚动求和的需求特别常见,我给你准备了两个实用的解决方案——分别用Excel/Google Sheets和Python Pandas,你可以根据自己的工具偏好来选:

方案1:用Excel/Google Sheets实现

首先有个关键前提:必须先按「城市」分组,再按「月份从早到晚」排序,不然滚动求和的范围会错位。如果你的月份是文本格式(比如Jan/Feb),记得用自定义排序保证顺序正确,别让April跑到Feb前面哦。

假设你的数据在A:C列(A=Month, B=City, C=Sales),要在D列生成R3Month列:

  1. 选中所有数据,按「City」升序、「Month」升序排序;
  2. 在D2单元格输入公式:
    =SUM(INDEX($C$2:$C$11,MAX(ROW()-2,MATCH($B2,$B$2:$B$11,0))):$C2)
    
  3. 下拉填充整个D列即可。

这个公式的逻辑很灵活:自动找到当前城市的第一行数据,然后取「当前行往上2行(如果存在)到当前行」的销售额求和,完美处理不足3个月的情况(比如第一个月就只算当月,第二个月算前两个月的和)。

如果用的是Excel 365或Google Sheets,还可以用更简洁的动态数组公式,一次性生成所有结果:

=BYROW(B2:C11,LAMBDA(row,SUM(FILTER(C2:C11,(B2:B11=INDEX(row,1))*(ROW(C2:C11)>=ROW(INDEX(row,2))-2)*(ROW(C2:C11)<=ROW(INDEX(row,2)))))))
方案2:用Python Pandas实现

如果数据量比较大,用代码处理效率更高,步骤如下:

import pandas as pd

# 构造你的原始数据(如果是CSV文件,用pd.read_csv()读取即可)
data = pd.DataFrame({
    'Month': ['Jan', 'Jan', 'Feb', 'Feb', 'Mar', 'Mar', 'April', 'April', 'May', 'May'],
    'City': ['Paris', 'NY', 'Paris', 'NY', 'Paris', 'NY', 'Paris', 'NY', 'Paris', 'NY'],
    'Sales': [1000, 2000, 1200, 3000, 1000, 2000, 1400, 1000, 2000, 1000]
})

# 定义月份的正确顺序,避免按字母排序出错
month_order = ['Jan', 'Feb', 'Mar', 'April', 'May']
data['Month'] = pd.Categorical(data['Month'], categories=month_order, ordered=True)

# 按城市和月份排序
data_sorted = data.sort_values(['City', 'Month'])

# 按城市分组,计算3个月滚动求和(min_periods=1表示不足3个月时取现有数据求和)
data_sorted['R3Month'] = data_sorted.groupby('City')['Sales'].rolling(window=3, min_periods=1).sum().reset_index(drop=True)

# 打印结果
print(data_sorted)

运行后会得到你想要的结果:

Month   City  Sales  R3Month
0     Jan  Paris   1000    1000.0
2     Feb  Paris   1200    2200.0
4     Mar  Paris   1000    3200.0
6   April  Paris   1400    3600.0
8     May  Paris   2000    4400.0
1     Jan     NY   2000    2000.0
3     Feb     NY   3000    5000.0
5     Mar     NY   2000    7000.0
7   April     NY   1000    6000.0
9     May     NY   1000    4000.0

内容的提问来源于stack exchange,提问作者Jay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:45:37