我想在找到移动平均线
时移除主要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