计算运行时的中位数缺失值?(missing value when calculating runni

2019-06-27 11:09发布

我想理顺一个时间序列,以避免虚假抖动/错误。 换句话说,我希望做一些非常强大的本地平滑。

我碰到rollmean和rollmedian来到动物园包,但遇到了一个问题,因为我的载体,它有一个NA。 然后我读的地方,这些动物园函数使用runmed,这其中就有问题。

== ==例子

median(c(1,1,1,2,2,2,7,NA,1,2,3,10,10,10),na.rm = TRUE)
runmed(c(1,1,1,2,2,2,7,NA,1,2,3,10,10,10),k=3)

第一行返回2,但是,如果将返回NA na.rm = TRUE不包括。 第二行返回Error in runmed(c(1, 1, 1, 2, 2, 2, 7, NA, 1, 2, 3, 10, 10, 10), k = 3) : NA/NaN/Inf in foreign function call (arg 1) 有没有办法到na.rm参数添加到该行。

我该如何runmed处理NA? 顺便说一句,rollmean返回一个载体,其是正确的直到NA,然后然后,返回NA为每一个值。

Answer 1:

使用na.omit

runmed(na.omit(c(1,1,1,2,2,2,7,NA,1,2,3,10,10,10)),k=3)
# [1]  1  1  1  2  2  2  2  2  2  3 10 10 10
#attr(,"k")
#[1] 3

或者使用的一个na.*的功能从动物园na.locfna.approxna.splinena.aggregate等),如

runmed(na.locf(c(1,1,1,2,2,2,7,NA,1,2,3,10,10,10)),k=3)
#[1]  1  1  1  2  2  2  7  7  2  2  3 10 10 10
#attr(,"k")
#[1] 3


Answer 2:

runquantile从caTools包 。



文章来源: missing value when calculating running medians?