在r的向量边界处填充NA

Hon*_* Li 4 r linear-interpolation zoo na

我有一个在边界处包含NA的向量

x <- c(NA, -1, 1,-1, 1, NA, -1, 2, NA, NA)
Run Code Online (Sandbox Code Playgroud)

我希望结果是:

c(-3, -1, 1,-1, 1, 0, -1, 2, 5, 8)
Run Code Online (Sandbox Code Playgroud)

换句话说,我想用线性插值来填充内部和边界NA(也许我不能称其为“ inter- polation”,因为NA处于边界)。

我在“ zoo”包na.fill(x,“ extend”)中尝试了一个函数,但是边界输出不是我想要的东西,它只重复最左边或最右边的非NA值:

na.fill(x,"extend")
Run Code Online (Sandbox Code Playgroud)

输出是

[1] -1 -1  1 -1  1  0 -1  2  2  2
Run Code Online (Sandbox Code Playgroud)

我还检查了用于填充NA的其他函数,例如na.approx(),na.locf()等,但是它们都不起作用。

na.spline确实可以工作,但是边界NA的输出导致极大的变化。

na.spline(x)
Run Code Online (Sandbox Code Playgroud)

输出为:

 [1] -15.9475983  -1.0000000   1.0000000  -1.0000000   1.0000000   0.3400655  -1.0000000   2.0000000
 [9]  13.1441048  35.9323144
Run Code Online (Sandbox Code Playgroud)

边界点太大。谁能帮我吗?提前致谢!

tmf*_*mnk 6

您可以na.spline()zoo库中使用:

na.spline(x)

[1] 0.0 0.5 1.0 1.5 2.0 2.5
Run Code Online (Sandbox Code Playgroud)

原始问题的数据:

x <- c(0, NA, 1, NA, 2, NA)
Run Code Online (Sandbox Code Playgroud)