[R] replacing zeros with above/below numbers ?

ce zadig_1 at excite.com
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
To: "ce" <zadig_1 at excite.com>
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
> 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




More information about the R-help mailing list