问题标签 [rollapply]

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 投票
1 回答
297 浏览

r - 使用 exp 函数在 R 中滚动应用行

我有df(A)14 列和 1356 行的数据框。我有这个功能,用于为每 12 行应用一个总和,如移动平均线:

但在每 12 行中,我需要对 应用乘法exp(n/12),其中n 的数字是从 0 到 11。综合起来,结果可能是:

逻辑上每 12 行重复一次操作。是否可以将其应用于函数rollapply或我需要编写一个循环for

0 投票
0 回答
263 浏览

r - roll_median 的 na.rm 行为?

快速提问:谁能帮助解释为什么我得到所有 NA 的滚动中值输出。我将 na.rm 设置为 TRUE 但这似乎没有帮助。谢谢!

作为参考,我希望正确的输出是:

我知道如何用 rollapply 做到这一点:

但是出于速度的原因(我正在处理具有数千万行的数据框),我希望使用 roll_median 来完成。有谁知道如何做到这一点?谢谢!

0 投票
1 回答
852 浏览

r - rollapply 出错:下标越界

我首先想描述我的问题:我想要做的是计算 24 小时窗口内价格峰值的数量,而我拥有半小时的数据。

我看过所有 Stackoverflow 的帖子,比如这个: Rollapply for time series

(如果有更多相关的,请告诉我;))

因为我不能也可能也不应该上传我的数据,这里有一个最小的例子:我模拟一个随机变量,将它转换为一个 xts 对象,并使用用户定义的函数来检测“尖峰”(在这种情况下当然很荒谬,但说明了错误)。

该函数按预期工作:它采用前面的 10 个值并计算平均值。

然后,我定义了一个自己的函数来查找峰值:一个峰值是一个局部最大值(高于它周围的 m 个点)并且至少与时间序列的平均值 + h 一样大。这将导致:

并且工作正常:回到示例:

但是,使用该rollapply()函数会导致:

我首先想到,好吧,可能会发生错误,因为它可能会因为m参数的原因而对第一个点运行 int 负索引。可悲的是,设置m为零不会改变错误。

我也试图追踪这个错误,但没有找到源头。有谁可以帮我离开这里吗?

编辑:尖峰图片:澳大利亚电力市场的尖峰。find_peaks(20,50) 确定红色点为尖峰,find_peaks(0,50) 额外发现蓝色点为尖峰(因此,第二个参数 h 很重要,因为蓝色点显然不是我们要分析的当我们谈论尖峰时)。

0 投票
1 回答
667 浏览

r - 优化rollapplyr自定义函数

我有以下数据:

为此,我正在运行下面的代码,该代码创建变量 v 的滚动平均值,忽略异常值和 NA。该代码正在运行,但性能很差。我确信有更有效的方法可以使用 apply 或类似的东西来运行它,但我未能成功创建一个更快的版本。任何人都可以阐明如何提高效率吗?

0 投票
0 回答
109 浏览

r - 使用多个、累积和滞后参数的函数生成的 Data.table 列

我正在尝试向 data.table 添加一列,其中 data.table 的该列通过将每组值的累积(滞后 1)向量以及组级属性传递给函数来填充,并且然后返回适当的值。

我有 800 万行,每个代理日一个。我的函数比 myfun 更复杂,但关键是它从 agent-day 表中获取两个参数:一个向量 (Vector),其中包含特定代理在特定日期之前所有天的值,以及一个代理向量每个代理都相同的级别属性 (PerAgent)。

“答案”列是我想要生成的(显然不是像我在这里所做的那样手动生成)。

我现在所拥有的不起作用,因为我试图传递第二个参数是:

如果我不需要将第二个参数传递给(简化的)函数,则可以:

非常感谢您的帮助。

0 投票
2 回答
394 浏览

r - 如何加速/改进滚动平均功能?

我的数据是 988、785 obs。3 个变量。我的数据的一个较小的例子如下:

我的设备的采样率为 100 Hz。我希望在 1 到 10 秒的时间内计算Acceleration每个的滚动平均值。ID我使用以下方法执行此操作:

但是,我现在需要计算 1 到 10 分钟的滚动时间。我可以通过使用上面的代码并替换为以下行来做到这一点:

但是,这需要数小时才能运行我的数据集,并导致我的 Mac 上的 RStudio(详情如下)挂起!有没有办法a)整理上面的代码或b)使用不同的包/方法来实现更快的结果?

谢谢你。

0 投票
2 回答
1542 浏览

r - 关于 zoo::rollapply 的几个问题

我对rollapply's widthoption 的理解是它指定了函数将在其上运行的窗口大小,而byoptions 指定了这个窗口的移位大小。这是我的数据集:

以下是证实我在上面写过的示例:

尽管如此,我有几个问题:

1)为什么这个在工作时返回错误max(20)?一切都与上一个示例相同,除了print替换为max

如何调试这些类型*apply族函数错误?

2) 在选项中使用大于 1 的向量的目的是什么?with为什么下面的代码在奇数位置打印一个数字输出,但将奇数位置的两个数字分配给w12变量?

3)将向量和列表传递给参数有什么区别width(与以前的输出相比,这是完全不同的)?

4)做by.column什么?我期待它与矩阵有关,所以我尝试了以下操作:

0 投票
0 回答
252 浏览

r - 在 data.table 中使用 rollapply 对两个变量进行 t.test

我正在尝试t.test使用来自两个单独列(sample1 和 sample2)的样本运行 7 天滚动窗口的两个样本 t 检验。从第一天开始,我想为每个测试获取 p 值并将它们添加到我当前的数据中。我尝试rollapply了几种形式,但都没有成功。

我收到以下错误:

第二次尝试:

仅创建一个测试并重复值。

第三次尝试:

我收到以下错误:

0 投票
2 回答
850 浏览

r - 在 R 中计算超过 1 年时间窗口的累积产品

我有问题要求我计算一系列 1 期收益的滚动乘积。滚动窗口的长度是可变的。目的是获得尽可能接近 12 个月窗口的 1 期回报的滚动产品。

for我已经能够通过循环和语句使用蛮力产生一个可行的解决方案if,但是我想知道是否有一个优雅的解决方案。我花了很多时间尝试rollapply其他类似的功能,但我无法获得解决方案。

下面的数据说明了这个问题。

在示例中,第 29 行的 12 个月回报计算为从第 26 行到第 29 行的 1 个期间回报的乘积,因为第 25 行和第 26 行之间包含 02-04-15(从 01-04-16 开始的 365 天)。另一方面,第 15 行的 12 个月回报是 NA,因为 30-03-13(从 30-03-14 开始的 365 天)超出了我可观察到的 1 个周期回报的时间窗口。

如果有人能提出一些解决这个问题的方法,我会很高兴。

只是为了清楚起见,如果提供的数据没有多大意义,是因为这是我为说明目的而创建的更大数据库的缩减版本。

0 投票
2 回答
6223 浏览

r - data.table 列上的差异

对此真的很沮丧。我只想获取 data.table 中的行之间的差异。其中差异(n)=值(n)-值(n-1)。因此,与我所拥有的相比,结果应该移动 1 个位置,并且每个“变量”的第一个位置应该是 NA。即差异应该是(NA,4,-2,NA,1,-8)。每个“变量的第一个值应该是 NA,因为没有位置 n-1。知道如何修改函数来完成此操作吗?真的很想知道如何使用 rollapplyr 来做到这一点,以便我自己理解.

谢谢。

数据表: