首页 > 解决方案 > 滚动均方根而不是r中的均值

问题描述

假设我有 1 小时的数据,我可以使用以下代码通过滚动平均值将数据聚合为 2 小时和 3 小时的数据。

library(zoo)
h1<-c(2, 4, 6)
h2<-rollmean(h1,2)
h3<-rollmean(h1,3)

这是我从中得到的:

h2
[1] 3 5

h3
[1] 4

但是我想在聚合时使用root mean square下面的函数而不是函数。mean

sqrt(mean(x^2))

以下是所需的输出:

h2_rms
[1] 3.162278 5.099020
h3_rms
[1] 4.320494

标签: rrolling-computation

解决方案


您可以通过以下方式应用您自己的功能rollapply

library(zoo)

h1<-c(2, 4, 6)
rms <- function(x) sqrt(mean(x^2))

h2 <- rollapply(h1,2, rms)
h3 <- rollapply(h1,3, rms)

h2
#[1] 3.162278 5.099020

h3
#[1] 4.320494

推荐阅读