【发布时间】:2019-02-22 14:48:22
【问题描述】:
是否有任何快速函数能够计算加权的滚动平均值?这是必要的,因为我对每个数据点(以秒为单位)进行了多次观察(并不总是相同的数量),并且我平均了。当我取滚动平均值时,我想重新加权以获得无偏的滚动平均值。
到目前为止,我想出了这个解决方案(在这个例子中,窗口为 3 秒)。
sam <- data.table(val_mean=c(1:15),N=c(11:25))
sam[,weighted:=val_mean*N]
sam[,rollnumerator:=rollapply(weighted,3,sum,fill=NA,align="left")]
sam[,rolldenominator:=rollapply(N,3,sum,fill=NA,align="left")]
sam[,rollnumerator/rolldenominator]
我找不到任何已解决此问题的问题。
这与数据的不等间距无关:我可以通过使用 NA 扩展我的 data.table 以包含每秒(上面的示例是等间距的)来解决这个问题。另外,我不想包含 RcppRoll 的 roll_mean 意义上的权重:在那里,所有时间窗口的权重都是固定的(“长度为 n 的向量,为 窗口内的每个元素提供权重 ."),而在我的情况下,权重会根据当前处理的值而变化。第三,我不想要自适应窗口大小,它应该保持固定(比如 3 秒)。
【问题讨论】:
标签: r dplyr data.table