我有一个向量,它包含几个NaN。例如,
d=c(NaN,2,3,4,2,4,7,NaN,8,5,6,NaN(
我想做一些推断来代替NaN。对我来说,困难在于我不知道我有多少NaN,它们在哪里。
非常感谢。
您可以使用zoo
函数执行线性插值。
d=c(NaN,2,3,4,4,2,4,7,NaN,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
我们可以使用imputeTS
中的na_interpolation
和几个选项:请参阅:https://www.rdocumentation.org/packages/imputeTS/versions/3.2/topics/na.interpolation
library(imputeTS)
na_interpolation(d, option = "linear", maxgap = Inf)
输出:
> na_interpolation(d, option = "linear", 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