[R-SIG-Finance] Fill values in a zoo object
Gabor Grothendieck
ggrothendieck at gmail.com
Mon Sep 6 01:05:07 CEST 2010
On Sun, Sep 5, 2010 at 6:46 PM, Wilfred Daye <wdaye01 at gmail.com> wrote:
> Hi, I have a tmp object which is stream of numbers of -1, 0, 1, 2. I want
> to make values from 2007-09-05 to 2007-09-13 to be 0, and from 2007-09-14 to
> 2007-09-27 to be 1, and 2007-09-28 to 2007-10-03 to be 0 again. To logic is
> that suppose t(i)=1, then t(i+n)=1 if t(i+n) already is {0 or 1}, but not
> 2. However, if i(i) is already {0 or 2}, then t(i+n) = 0, where n represent
> the next n days. What is the best approach without loops? Thank you.
>
>> class(tmp)
> [1] "xts" "zoo"
>> tmp[40:60]
> Tmp
> 2007-09-05 2
> 2007-09-06 0
> 2007-09-07 2
> 2007-09-10 0
> 2007-09-11 0
> 2007-09-12 0
> 2007-09-13 0
> 2007-09-14 1
> 2007-09-17 0
> 2007-09-18 0
> 2007-09-19 0
> 2007-09-20 0
> 2007-09-21 0
> 2007-09-24 1
> 2007-09-25 0
> 2007-09-26 0
> 2007-09-27 0
> 2007-09-28 2
> 2007-10-01 0
> 2007-10-02 0
> 2007-10-03 2
Try na.locf:
library(zoo)
z <- structure(c(0, NA, 0, NA, NA, NA, NA, 1, NA, NA, NA, NA, NA,
1, NA, NA, NA, 0, NA, NA, 0), index = structure(c(13761, 13762,
13763, 13766, 13767, 13768, 13769, 13770, 13773, 13774, 13775,
13776, 13777, 13780, 13781, 13782, 13783, 13784, 13787, 13788,
13789), class = "Date"), class = "zoo")
z[z == 0] <- NA
z[z == 2] <- 0
na.locf(z)
--
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com
More information about the R-SIG-Finance
mailing list