gpt4 book ai didi

r - 计算运行中位数时缺失值?

转载 作者:行者123 更新时间:2023-12-02 16:01:31 26 4
gpt4 key购买 nike

我想平滑时间序列以避免虚假抖动/错误。换句话说,我想做一些非常局部的鲁棒平滑。

我在动物园包中遇到了 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.rm = TRUE 则返回 NA不包括在内。第二行返回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 参数。

如何运行来处理 NA?顺便说一句,rollmean 返回一个直到 NA 为止都是正确的向量,然后为此后的每个值返回 NA。

最佳答案

使用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

或者使用 zoo 中的 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

关于r - 计算运行中位数时缺失值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12150697/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com