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

R语言实现滑动窗口求和:将连续40行求和结果写入对应新列

嗨,这个需求本质是滑动窗口求和的小变体——只是把每个窗口的计算结果往后偏移了10行(比如1-40行的和放到第50行,正好差10行)。下面给你几种常用工具的实现方案,挑你顺手的来:

使用Excel实现

如果用Excel处理,有两种简单方式:

  • 手动拖拽公式:假设原数据在A列,新列是B列。在B50单元格输入=SUM(A1:A40),然后把鼠标移到单元格右下角的填充柄(十字图标),按住左键往下拖,Excel会自动把求和范围依次更新为A2:A41、A3:A42……直到最后一个有效窗口。
  • 动态自适应公式:如果担心拖拽出错,可以用更稳定的INDEX函数替代OFFSET(OFFSET是易失性函数,会拖慢大表格)。在B50输入:
    =SUM(INDEX(A:A,ROW()-49):INDEX(A:A,ROW()-9))
    
    这个公式里,ROW()-49会自动计算当前行对应的窗口起始行(比如B50的ROW()是50,50-49=1),ROW()-9是窗口结束行(50-9=40),拖拽时会自动适配每一行的范围。
使用Python Pandas实现

如果你用Python处理数据,Pandas的滑动窗口+偏移功能可以一行搞定:

import pandas as pd

# 读取你的数据(替换成实际的读取方式,比如read_excel、read_csv)
df = pd.read_csv("your_data_file.csv")

# 计算窗口大小为40的滑动和,然后往后偏移10行存入新列
df["rolling_sum_shifted"] = df["your_value_column"].rolling(window=40).sum().shift(10)
  • 解释:rolling(window=40).sum()会计算每个位置的前40行(含当前行)的和,第40行(1基)的结果就是1-40行的和;shift(10)会把这个结果往后移动10行,正好放到第50行,完美匹配你的需求。
使用R语言实现

用R的话,结合dplyr和zoo包可以快速实现:

library(dplyr)
library(zoo)

# 假设你的数据框是df,数值列名为value
df <- df %>%
  mutate(rolling_sum_shifted = rollsum(value, k=40, fill=NA, align="right") %>% lag(10))
  • 解释:rollsum(..., align="right")会计算以当前行为结尾的40行窗口和,lag(10)将结果往后偏移10行,对应到你要的位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:20:05