缺失值我想處理在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