以下是样本数据(大约8000行数据)。如何用符合其余数据的平滑样条曲线中的值替换所有NA?
Date Max Min Rain RHM RHE
4/24/1981 35.9 24.7 0.0 71 37
4/25/1981 36.8 22.8 0.0 62 40
4/26/1981 36.0 22.6 0.0 47 37
4/27/1981 35.1 24.2 0.0 51 39
4/28/1981 35.4 23.8 0.0 61 47
4/29/1981 35.4 25.1 0.0 67 43
4/30/1981 37.4 24.8 0.0 72 34
5/1/1981 NA NA NA NA NA
5/2/1981 39.0 25.3 NA NA 55
5/3/1981 35.9 23.0 0.0 68 66
5/4/1981 28.4 22.4 0.7 70 30
5/5/1981 35.5 24.6 0.0 47 31
5/6/1981 37.4 25.5 0.0 51 31
答案 0 :(得分:6)
要检查的一件事可能是na.spline
包中的zoo
功能。它似乎是为此目的而定制的。
缺失值(NAs)分别通过样条曲线通过近似或三次样条插值替换为线性插值。
答案 1 :(得分:2)
我正在使用一些简化数据来回答此查询。拿这个数据集:
dat <- structure(list(x = c(1.6, 1.6, 4.4, 4.5, 6.1, 6.7, 7.3, 8, 9.5,
9.5, 10.7), y = c(2.2, 4.5, 1.6, 4.3, NA, NA, 4.8, 7.3, 8.7, 6.3, 12.3)),
.Names = c("x", "y"), row.names = c(NA, -11L), class = "data.frame")
使用plot(dat,type="o",pch=19)
绘制时,如下所示:
现在为没有NA
值
smoo <- with(dat[!is.na(dat$y),],smooth.spline(x,y))
然后预测y
的{{1}}值,其中x
目前为y
NA
要将值填回原始数据,您可以执行以下操作:
result <- with(dat,predict(smoo,x[is.na(y)]))
points(result,pch=19,col="red")