说我有一个data.frame:前后NA后,平均的情况下更换NA,除非行开始或NA
t<-c(1,1,2,4,NA,3)
u<-c(1,3,4,6,4,2)
v<-c(2,3,4,NA,3,2)
w<-c(2,3,4,5,2,3)
x<-c(2,3,4,5,6,NA)
df<-data.frame(t,u,v,w,x)
df
t u v w x
1 1 1 2 2 2
2 1 3 3 3 3
3 2 4 4 4 4
4 4 6 NA 5 5
5 NA 4 3 2 6
6 3 2 2 3 NA
我想改变的NA,使得成为NA由NA之前的一个值和NA之后的一个值的平均值代替。但是,如果一行以NA开始,我希望它被替换为后面的值。当一行以NA结尾时,我希望它被NA之前的值替换。因此,我想得到以下结果:
t u v w x
1 1 1 2 2 2
2 1 3 3 3 3
3 2 4 4 4 4
4 4 6 5.5 5 5 --> NA becomes average of 6 and 5
5 4 4 3 2 6 --> NA becomes value of next case
6 3 2 2 3 3 --> NA becomes value of previous case
我有成千上万的行,所以任何帮助都非常感谢!
这确实有窍门!你是一个真正的英雄。 –
我得到这个错误'na.approx(x,rule = 2)错误:找不到函数“na.approx”' –
'library(zoo)'please。包括那 – Sotos