问题描述
我有一个向量,其中包含几个 NaN。例如,
d=c(NaN,2,3,4,7,NaN,8,5,6,NaN)
我想做一些解释来替换 NaN。对我来说,困难在于我不知道我有多少个 NaN 以及它们在哪里。
非常感谢。
解决方法
您可以使用 zoo
函数执行线性插值。
d=c(NaN,2,3,4,7,NaN,8,5,6,NaN)
zoo::na.spline(d)
# [1] 1.86 2.00 3.00 4.00 4.00 2.00 4.00 7.00 9.08 9.61 8.00 5.00 6.00 15.06
zoo::na.approx(d,na.rm = FALSE)
#[1] NA 2.00 3.00 4.00 4.00 2.00 4.00 7.00 7.33 7.67 8.00 5.00 6.00 NA
,
我们可以使用 na_interpolation
中的 imputeTS
和几个选项:
见:https://www.rdocumentation.org/packages/imputeTS/versions/3.2/topics/na.interpolation
library(imputeTS)
na_interpolation(d,option = "linear",maxgap = Inf)
输出:
> na_interpolation(d,maxgap = Inf)
[1] 2.000000 2.000000 3.000000 4.000000 4.000000 2.000000 4.000000 7.000000 7.333333 7.666667 8.000000 5.000000 6.000000
[14] 6.000000