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)
边界点太大。谁能帮我吗?提前致谢!
您可以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)