# [R] replacing zeros with above/below numbers ?

Thu Feb 6 05:02:44 CET 2014

```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" [kridox at ymail.com]
Date: 02/05/2014 10:20 PM
CC: "r-help" <r-help at 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 <zadig_1 at 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 at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> and provide commented, minimal, self-contained, reproducible code.

--
Pascal Oettli
Project Scientist
JAMSTEC
Yokohama, Japan

```