我想实现以下rollscale
函数,该函数可以对数据集x进行缩放(居中和规范化,即减去μ并除以sigma),而不是使用全局mu
和{{1它们是在滚动窗口中对看到的数据进行计算的。我出来了以下但不知道如何在第三个sigma
上定义函数参数,即我如何知道当前位置是什么?
rollapplyr
简单的缩放功能是:
library(zoo)
rollscale <- function(x, k) {
mu <- rollapplyr(x, k, mean)
sigma <- rollapplyr(x, k, sd)
x <- rollapplyr(x, k, function(x) ???)
}
答案 0 :(得分:1)
你使这比现在更复杂。您有一个scale
功能,并且您希望以滚动方式应用它。这正是rollapply
所做的!
scale <- function(x) {
mu <- mean(x)
sigma <- sd(x)
x <- (x - mu)/sigma
}
scaled.data <- rollapplyr(Data, 5, scale)