如何获取有关移动平均线的信息?

问题描述

我想为我的项目计算移动平均值。但我不明白这个自爆代码。如何获得更多关于移动平均码的信息?

cx <- c(0,cumsum(ifelse(is.na(x),x)))
cn <- c(0,1)))0
rx <- cx[(n+1):length(cx)] - cx[1:(length(cx) - n)]
rn <- cn[(n+1):length(cx)] - cn[1:(length(cx) - n)]
rsum <- rx / rn

解决方法

如果问题是要求解释代码,那么它取向量 x 的长度 n 的移动平均值。例如,如果没有 NA 且 n=2,则输出的前几个元素是 (x[1] + x[2])/2、(x[2] + x[3])/2 等.

n <- 2
x <- c(1,3,4,7,9)
cx <- c(0,cumsum(ifelse(is.na(x),x)))  # 0  1  4  8 15 24
cn <- c(0,1)))  # 0 1 2 3 4 5
rx <- cx[(n+1):length(cx)] - cx[1:(length(cx) - n)]  #  4  7 11 16
rn <- cn[(n+1):length(cx)] - cn[1:(length(cx) - n)]  # 2 2 2 2
rsum <- rx / rn  # 2.0 3.5 5.5 8.0

cx 是 0 后跟 x 的累积和,除了 NA 被 0 替换 计算累计金额。

cn 是 0 后跟非 NA 的累积数量。

rx 是累积和减去累积和 n 个位置。

rn 是非 NA 的数量减去后面 n 个位置的非 NA 的数量。

rsum 是最后两个的比值。