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
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 -
You seem to be treating zeroes as unknown values. Perhaps you should consider
setting them to NA and using the na.approx function from the zoo package.
---
Jeff NewmillerThe . . Go
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
Yes , indeed this is what I am looking for :
a[ a == 0.0 ] = NA
na.approx(a,na.rm=FALSE)
Thanks a lot.
-Original Message-
From: Jeff Newmiller [jdnew...@dcn.davis.ca.us]
Date: 02/05/2014 10:35 PM
To: ce zadi...@excite.com, r-help@r-project.org
Subject: Re: [R] replacing zeros
HI,
May be this helps:
a1 -a
indx - which(c(0,diff(a!=0)) 0)
indx1 - which(c(0,diff(a!=0)) 0)
a[a==0] - rep( rowMeans(cbind(a[indx-1],a[indx1])),indx1-indx)
a
# [1] 0.97210 0.97220 0.97300 0.97230 0.97145 0.97145 0.97145 0.97060 0.96980
#[10] 0.97040 0.97100 0.96990
#Another option is
6 matches
Mail list logo