缺失值我想处理在R.处理与R滤光器()函数
事实上使用filter()
功能缺失值,我希望计算X_t = 1/(2*T+1) * sum(X_i, i = (t-T)...(t+T))
其中(X_t)
是包含缺失一个经典的时间序列值。 filter()
在时间间隔[(t-T);(t+T)]
上计算总和,但它不给出的平均值的值不包括NA
s。
有没有人有任何想法如何处理呢?
缺失值我想处理在R.处理与R滤光器()函数
事实上使用filter()
功能缺失值,我希望计算X_t = 1/(2*T+1) * sum(X_i, i = (t-T)...(t+T))
其中(X_t)
是包含缺失一个经典的时间序列值。 filter()
在时间间隔[(t-T);(t+T)]
上计算总和,但它不给出的平均值的值不包括NA
s。
有没有人有任何想法如何处理呢?
如果你想在2k+1
点简单移动平均线,你可以这样做:
x <- c(rep(1,5), NA, rep(1,5))
k <- 1 ## Moving average over three points.
smooth <- sapply(1:length(x), mean(x[(i-k):(i+k)], na.rm=TRUE))
这导致在此情况下,所有的人的载体。
试试这个:
library(zoo)
x <- 1:10
x[6] <- NA
rollapply(x, 3, mean, na.rm = TRUE)
## [1] 2.0 3.0 4.0 4.5 6.0 7.5 8.0 9.0
有很多种的,你可能会或可能不会取决于你想要得到什么需要其他参数。见?rollapply
。
修订版根据允许简化的更新版本rollapply
更新了答案。
非常感谢您的回答。这正是我所期待的! – Yaya
该sapply把戏并不适合我。你必须操纵初始向量得到它与Ks的合作大于1。这里是我的代码:
k <- 1 ## Moving average over three points.
x <- c(rep(1,5), NA, rep(1,5)) # input vector
stmp <- c(rep(NA,k), x, rep(NA,k))
smooth <- sapply((k+1):(k+length(x)), function(i){mean(x[(i-k):(i+k)], na.rm=TRUE)})
我还添加了一个函数语句使代码运行没有错误。 希望它有助于:)
请向我们提供样本数据和迄今使用的代码。这会让你更容易回答你的问题。 – Andrie