On Wed, Aug 25, 2010 at 11:18 AM, skan <juanp...@gmail.com> wrote: > > # duplicated / na.locf doesn't work > it says Error in fix.by(by.x, x) : 'by' must specify valid column(s) > > if I use ifelse instead of ifelse.zoo it works but it gives me a non zoo > vector. > Myabe is because my zoo version is older. >
They all work: > library(zoo) > library(chron) > z <- zoo(1:10, chron(0:9/5)) > > # aggregate / na.locf > z.ag <- aggregate(z, as.Date, head, 1) > na.locf(z.ag, xout = time(z)) (01/01/70 00:00:00) (01/01/70 04:48:00) (01/01/70 09:36:00) (01/01/70 14:24:00) 1 1 1 1 (01/01/70 19:12:00) (01/02/70 00:00:00) (01/02/70 04:48:00) (01/02/70 09:36:00) 1 6 6 6 (01/02/70 14:24:00) (01/02/70 19:12:00) 6 6 > > # duplicated / na.locf > z.na <- ifelse.zoo(!duplicated(as.Date(time(z))), z, NA) > na.locf(z.na) (01/01/70 00:00:00) (01/01/70 04:48:00) (01/01/70 09:36:00) (01/01/70 14:24:00) 1 1 1 1 (01/01/70 19:12:00) (01/02/70 00:00:00) (01/02/70 04:48:00) (01/02/70 09:36:00) 1 6 6 6 (01/02/70 14:24:00) (01/02/70 19:12:00) 6 6 > > # ave - as before > zz <- z > zz[] <- ave(coredata(z), as.Date(time(z)), FUN = function(x) head(x, 1)) > zz (01/01/70 00:00:00) (01/01/70 04:48:00) (01/01/70 09:36:00) (01/01/70 14:24:00) 1 1 1 1 (01/01/70 19:12:00) (01/02/70 00:00:00) (01/02/70 04:48:00) (01/02/70 09:36:00) 1 6 6 6 (01/02/70 14:24:00) (01/02/70 19:12:00) 6 6 > packageDescription("zoo")$Version [1] "1.6-4" > R.version.string [1] "R version 2.11.1 Patched (2010-05-31 r52167)" ______________________________________________ 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.