[R] Repeat the first day data through all the day. Zoo
Gabor Grothendieck
ggrothendieck at gmail.com
Wed Aug 25 19:10:44 CEST 2010
On Wed, Aug 25, 2010 at 11:18 AM, skan <juanpide at 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)"
More information about the R-help
mailing list