我有一个数据框有7个变量,我想应用一个滚动标准化窗口。我的数据帧没有NA值,所有变量的长度都是相同的。R中的滑动标准化窗口
> head(CK0159U09A3,10)
W1 W2 W3 W4 W5 W6 W7
1 1.37853716 0.01316304 -0.1363012 0.6895341 -0.7230930 -0.1310321 -0.4109521
2 -0.73032998 0.31212925 0.1654731 0.9187255 -0.8017260 -0.1619631 -0.4243575
3 -0.52130420 0.43831484 0.6088623 1.1183964 -0.8486971 -0.1970389 -0.4368820
4 0.55501096 0.13850401 1.1221211 1.2708212 -0.8701385 -0.2372061 -0.4490060
5 -0.06995122 -0.53842548 1.4592013 1.3581935 -0.8661200 -0.2791726 -0.4608654
6 -0.19984548 -0.78829431 1.4564180 1.3823090 -0.8431200 -0.3184653 -0.4722506
7 0.68935525 0.18733222 1.0158497 1.3344059 -0.8043461 -0.3526886 -0.4825229
8 -0.49540738 0.80663376 0.1774945 1.1800970 -0.7494087 -0.3803636 -0.4901212
9 -0.09501622 -0.17931684 -0.7074083 0.9312984 -0.6801124 -0.4008524 -0.4942994
10 -0.14939548 -0.68153738 -1.2723772 0.6054420 -0.5968207 -0.4149125 -0.4952316
我的窗口被定义为大小3
windowSize <- 3
我想我的数据帧中的尺寸= 3的滚动窗口应用到每个变量。归一化函数使用下列逻辑:
- 计算整个变量的标准偏差(长度(CK0159U09A3 [1] .....)
- 然后尺寸= 3的窗口适用于第一3值并计算它们的平均值
- 对于窗口中的第一个值,它将三个值的平均值相减,然后除以标准偏差
- 该函数然后递增1并对接下来的三个值执行相同的步骤全部7列
我知道动物园中的rollapply/r函数,但我无法理解如何编写关于获取当前值并执行减法和除法,然后递增到下一个值的部分。如果你不能说出来,我不是一个强大的程序员。
我相信它已经在下面的第一个答案中被捕获了,但是当滑动窗口到达列的末尾并且值小于窗口大小时,应该返回NAs。
任何帮助开裂这将不胜感激。
只是为了清楚起见,这里是我试图用数学来实现逻辑
1.3785 - ((1.378+(-0.7303)+(-0.5213)/windowSize))/S.D of column
-0.7303 - ((-0.7303+(-0.5213)+0.555)/windowSize))/S.D of column
-0.5213 - ((-0.5213+0.555+(-0.0699))/windowSize))/S.D of column
为上下两排,会发生什么,那里有没有尾随2倍的值?如果您给出*期望的输出*,这将有所帮助;也许是手动计算前几行,以便我们有一些事情需要验证。 – r2evans
@ r2evans,你发现了,我从来没有说过,如果值小于窗口的大小,会发生什么。我已经更新了原来的帖子,说明应该退还新来港定居人士。感谢您的高举。 – TheGoat