【发布时间】:2015-08-11 05:28:38
【问题描述】:
我手头有一个问题。
目标:我有一个由“零”和“NA”组成的月度时间序列数据集。这里零是值,我希望它们被更改,而 NA 是我希望在 R 中使用 StructTS 估算的缺失值。
数据集示例
dataset <- matrix(sample(c(NA, 1:5), 25, replace = TRUE), 5)
dataset[1,2]<-0
dataset[4,4] <- 0
在数据集中,我只想用一个值替换 NA 并让零仅为零。
研究和阅读了几篇博客后,我使用了以下方法:
missvalue <- function(df){
x<-df
x <- ts(rev(x),f=12)
fit <- ts(rowSums(tsSmooth(StructTS(x))[,-2]))
tsp(fit) <- tsp(x)
return(list(N=fit))
}
Newdata<-lapply(m,missvalue)
我还尝试了一种卑鄙的技巧:
##Missing Value another treatment
nzmean <- function(x) {
if (all(x==0)) 0 else mean(x[x!=0])
}
apply(m,1,nzmean)
附上我提到的帖子:
- R Convert NA's only after the first non-zero value
- Interpolate missing values in a time series with a seasonal cycle
对此的任何帮助都会非常棒。
【问题讨论】:
-
你可以用类似
dataset[is.na(dataset)] <- 250的东西替换NA。只需将 250 更改为要替换的值列表即可。 -
dataset的预期输出是什么? -
我希望将 NA 替换为最后 5 个数字的平均值或任何其他缺失值技术。零应该保持为零。
-
drmariod 我也试过了。我用“999999999”替换了所有的 NA,但这并没有帮助我解决手头的问题。我不知道如何继续发布。
标签: r time-series missing-data missingmethodexception