R中的移动函数,但不包含前导NA

时间:2015-06-12 18:42:11

标签: r filter na

我想在找到移动平均线

时移除主要NA

我在R中知道我可以使用滤波器计算滚动平均值(前5个数据点),

x <- 1:20
filter(x, c(0,rep(1/5,5)), sides = 1)

[1] NA NA NA NA NA  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17

我想要的是这相当于:

 [1]  0.0  1.0  1.5  2.0  2.5  3.0  4.0  5.0  6.0  7.0  8.0  9.0 10.0 11.0 12.0 13.0
[17] 14.0 15.0 16.0 17.0

如果序列小于窗口大小,它基本上只查看窗口中的值,如果窗口大小为0,则返回0.

这将更多地用作指标变量的加权平均值,例如:

set.seed(02138)
x = replicate(20,sample(c(0,1),1))
filter(x, c(0,seq(5,1,-1)/15), sides = 1)

 [1]         NA         NA         NA         NA         NA 0.20000000 0.06666667
 [8] 0.00000000 0.00000000 0.33333333 0.26666667 0.53333333 0.73333333 0.53333333
[15] 0.33333333 0.20000000 0.40000000 0.26666667 0.53333333 0.73333333

虽然我希望输出

 [1] 0.00000000 1.00000000 1.00000000 0.50000000 0.30000000 0.20000000 0.06666667
 [8] 0.00000000 0.00000000 0.33333333 0.26666667 0.53333333 0.73333333 0.53333333
[15] 0.33333333 0.20000000 0.40000000 0.26666667 0.53333333 0.73333333

0 个答案:

没有答案