The problem is that ifelse does not work the way you might think (see value section of ?ifelse) and basically should not be used with three zoo objects unless the three arguments to ifelse have the same time index.
We can get that effect by using na.pad = TRUE in your diff call: TradedRate <- with(x, ifelse(abs(diff(x.POS, na.pad = TRUE)) > 0, ifelse(x.POS != 1, -x, x), NA)) or alternately we can merge them together first: xm <- merge(x, dif = abs(diff(x$x.POS))) TradedRate <- with(xm, ifelse(dif > 0, ifelse(x.POS != 1, -x, x), NA)) By the way, to ensure that your output is reproducible be sure to use set.seed(...) before any call to a random number generator when posting. On Mon, Oct 12, 2009 at 5:30 AM, charliegenge <charlie.ge...@sc.com> wrote: > > Hi, > > I'm having an issue when using diff and ifelse on a zoo object..... > > x.Date <- as.Date("2003-02-01") + c(1, 3, 7, 9, 14) - 1 > x <- zoo(rnorm(5), x.Date) > x.POS <- c(0,0,0,1,1) > x<- merge(x,x.POS) > x > x x.POS > 2003-02-01 -0.1858136 0 > 2003-02-03 -1.3188533 0 > 2003-02-07 0.2709794 0 > 2003-02-09 -1.4915262 1 > 2003-02-14 0.5014170 1 > > When I create this new zoo object using the previous one (x) I don't get > exactly what I need......the traded rate is based on the lagged values, > rather than the present ones... > > TradedRate <- ifelse(abs(diff(x[,"x.POS"],lag= 1))>0,ifelse(x[,"x.POS"] > !=1,-x[,"x"],x[,"x"]),NA) > x <- merge(x, TradedRate, all=TRUE) > x > x x.POS TradedRate > 2003-02-01 -0.1858136 0 NA > 2003-02-03 -1.3188533 0 NA > 2003-02-07 0.2709794 0 NA > 2003-02-09 -1.4915262 1 -0.2709794 > 2003-02-14 0.5014170 1 NA > > The value for TradedRate on the 9th Feb should be -1.4945262 instead of > -0.2709794........what am I doing wrong? > > Thanks very much.. > -- > View this message in context: > http://www.nabble.com/Using-diff%2C-ifelse-on-zoo-object-tp25852822p25852822.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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. > ______________________________________________ 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.