问题标签 [rolling-sum]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3017 浏览

excel - 在 PowerPivot 中滚动 12 个月总和

在 PowerPivot Excel 2016 中,我编写了一个滚动 12 个月销售额的公式,如下所示:

但它似乎无法正常工作。每个月它只显示当月的销售额!有谁知道我应该如何解决我的问题?!

提前致谢

0 投票
2 回答
696 浏览

r - 滚动窗口中的条件和

我对 R 很陌生,所以如果我说错了,请提前道歉:)

我有一个由 395 行和 4973 列组成的数据框,按月排序,许多公司每月出现的次数(范围从 0 到例如 25)。从按月和年分组的每日数据中总结了发生次数。我的数据框 df 看起来像这样(只有几个月和 3 家公司):

我现在的任务是通过从 t-3 个月到 t-1 个月(前 3 个月)的三个月滚动窗口来总结每家公司的发生情况。但是,该总和应具有以下条件。它应该在三个月窗口内至少出现 10 次,在 t-1 月至少出现 3 次。只要满足这两个条件,NA 是否在 t-3 和/或 t-2 中都没有关系。

它应该是这样的。

我不知道如何解决这个问题,尤其是滚动窗口/总和(可能有滞后)的组合以及关于使用哪些数字和不使用哪些数字的条件。

0 投票
1 回答
2825 浏览

pandas - Pandas 在字符串列上滚动总和

我将 Python3 与 pandas 版本“0.19.2”一起使用。

我有一个熊猫df,如下所示:

我想按 'chat_id' 分组,然后在 'line' 上执行滚动总和之类的操作以获得以下信息:

我相信 df.groupby('chat_id')['line'].cumsum() 只适用于数字列。

我也试过 df.groupby(by=['chat_id'], as_index=False)['line'].apply(list) 来获取完整对话中所有行的列表,但后来我想不通了解如何解压该列表以创建“滚动总和”风格的对话栏。

0 投票
1 回答
703 浏览

r - r中数据框中每一列的最后12行的滚动总和

我有一个看起来像这样的数据框:数据框

这些列每三个月只有一次数据。对于除第一列之外的所有列,我想要一个新数据框中最后 12 行的运行总和。我已经使用带有代码的 for 循环成功地做到了这一点:

但是,由于列的数量,这需要很多时间。

我在互联网上搜索了解决方案,并尝试使用 apply 和 rollapply(来自“zoo”库)但没有任何运气。

我希望有人能够提供帮助,并提前感谢!

最好的问候拉斯穆斯

0 投票
3 回答
170 浏览

scala - 计算滚动和之类的函数式编程方法

假设我有一个数字列表:

对于列表中的每个元素,我需要找到滚动总和,即 最终输出应该是:

是否有任何转换允许我们将列表的两个元素(当前和前一个)作为输入并基于两者进行计算?就像是map(initial)((curr,prev) => curr+prev)

我想在不维护任何共享全局状态的情况下实现这一目标。

编辑:我希望能够对 RDD 进行相同类型的计算。

0 投票
2 回答
146 浏览

sql - SQL 根据不同商品的首次销售日期汇总 12 周的数据

该数据库有数千个单独的项目,每个项目都有多个首次销售日期和每周销售结果。我需要每个产品前 12 周的销售总额。

当我们使用 SUM(CASE) 知道开始日期时,代码用于之前的单个查询。这太手动了,尽管有数千种产品需要审查,我们正在寻找一种智能方法来加快速度。

我可以在此基础上求总和找到最短的首次购物日期,然后对接下来 12 周的结果求和吗?如果是这样,我该如何构建它,或者有更好的方法吗?

数据库中的列我需要参考样本数据

PROD_ID | WEEK_ID | STORE_ID | FIRST_SHOP_DATE | ITM_VALUE

12345543 | 201607 | 10000001 | 201542 | 24,356

12345543 | 201607 | 10000002 | 201544 | 27,356

12345543 | 201608 | 10000001 | 201542 | 24,356

12345543 | 201608 | 10000002 | 201544 | 27,356

32655644 | 201607 | 10000001 | 201412 | 103,245

32655644 | 201607 | 10000002 | 201420 | 123,458

32655644 | 201608 | 10000001 | 201412 | 154,867

32655644 | 201608 | 10000002 | 201420 | 127,865

0 投票
1 回答
468 浏览

r - R中的条件滚动和(滚动平均值)

数据

在上面的数据中,我想对每个人 (ID) 的“分数”进行 5 年滚动总和,条件是该人所在的当年公司。让我通过例子来解释一下。假设我想要 2009 年的“分数”变量的滚动总和,它应该首先检查该人 (ID) 工作的公司。在 2009 年,该人在 A 和 C 工作。然后它应该只计算公司 A 或 C 的“分数”的 5 年滚动总和。2009 年的 5 年滚动总和的输出将是(2(2005 年公司 A) + 5 ((2006 年 A 公司)) + 36 (2007 年 A 公司) + 27 (2009 年 A 和 C 公司) = 70。[注:2008 年被忽略,因为该人没有在 A 公司注册也不坚定 C]

我还想在类似的行上执行滚动平均。[注:原始数据有大约 3000 万个观测值]

0 投票
0 回答
1980 浏览

r - Fastest way to do a rolling sum in R

There have been several inquiries about doing rolling sums in R, but none have fully addressed the complexity of the problem. I am curious about finding the fastest way to take a rolling sum on a dataset with the following characteristics:

• At least 5,000 rows

• The data span at least 15 years

• The number of groups is a substantial fraction of the total number of rows

• The time series data are incomplete for each group

• There can be multiple observations for any group on any given day

A comprehensive solution to the rolling sum problem must be able to robustly handle each of these characteristics. I have benchmarked 3 different solutions. All solutions calculate a 7 day rolling sum and the results of each solution are identical. As far as I am aware, the plyr::ddply function is the fastest way to take a rolling sum, so I am interested in both optimizing this strategy and any code than can complete such a task faster. My R code and benchmarking results follow:

0 投票
1 回答
585 浏览

r - R:非标准窗口上的滚动总和

我有一个不规则的时间序列,我正在尝试在 3 个月的窗口中为与 ID 关联的每个操作计算滚动总和。

数据结构如下

我正在寻找这个输出

现在我正在使用这个脚本

但它总结了所有过去操作的价值。我如何介绍 3 个月的滚动金额?

0 投票
1 回答
908 浏览

python - Python pandas rolling.apply 两个时间序列输入到函数中

我有一个包含两列的 DatetimeIndex 索引数据框。指数参差不齐。

我想在长度为 20 天的滚动窗口上计算时间序列 A 和 B 的点积。

它应该返回:

这是如何获得的:

110 = 2*10+3*10+2*20(包括2016-01-06至2016-01-25期间获得的产品)

130 = 3*10+2*20+2*30(2016-01-20 至 2016-02-08 期间获得的产品)

80 = 1*20+2*30(2016-01-27至2016-02-15期间获得的产品)

140 = 3*20+1*20+2*30(2016-02-02至2016-02-21期间获得的产品)

180 = 2*20+3*20+1*20+2*30(2016-02-06至2016-02-25期间获得的产品)

点积是一个示例,应该可以推广到任何采用两个系列并返回一个值的函数。