In fact I don't want to replace with average of whole series, just before and after values something like this :
for (i in seq(from=2,to=nrow(a)-1,by=1)) { if ( a[i] == 0 ) a[i] = ( a[i+1] + a[i-1] ) / 2 } but I can't handle gracefully repeated zeros or first and last values. Jeff proposed na.approx function , I didn't know it, looks promising , I will look into it . ce -----Original Message----- From: "Pascal Oettli" [kri...@ymail.com] Date: 02/05/2014 10:20 PM To: "ce" <zadi...@excite.com> CC: "r-help" <r-help@r-project.org> Subject: Re: [R] replacing zeros with above/below numbers ? Hello, If you mean replacing 0 by the average of non-zero values, I guess one way is: > a[a==0] <- mean(a[a!=0]) Maybe some senior user might correct it. Regards, Pascal On 6 February 2014 12:05, ce <zadi...@excite.com> wrote: > > Dear all, > > My data is : > > a <- > c(0.9721,0.9722,0.9730,0.9723,0.0,0.0,0.0,0.9706,0.9698,0.0,0.9710,0.9699) > > I want to replace zeros with average of before and after values of them. > But sometimes there is one zero sometimes more than one. What is the most > elegant way to do this ? > Thanks a lot > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. -- Pascal Oettli Project Scientist JAMSTEC Yokohama, Japan ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.