Re: [R] cumsum on chron objects

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Wed 18 May 2005 - 09:39:30 EST

On 5/17/05, Gabor Grothendieck <ggrothendieck@gmail.com> wrote:
> On 5/17/05, Sebastian Luque <sluque@mun.ca> wrote:
> > Hi,
> >
> > Is there some alternative to cumsum for chron objects? I have data frames
> > that contain some chron objects that look like this:
> >
> > DateTime
> > 13/10/03 12:30:35
> > NA
> > NA
> > NA
> > 15/10/03 16:30:05
> > NA
> > NA
> > ...
> >
> > and I've been trying to replace the NA's so that a date/time sequence is
> > created starting with the preceding available value. Because the number of
> > rows with NA's following each available date/time is unknown, I've split
> > the data frame using:
> >
> > splitdf <- split(df, as.factor(df$DateTime))
> >
> > so that I can later use lapply to work on each "block" of data. I thought
> > I could use cumsum and set the NA's to the desired interval to create the
> > date/time sequence starting with the first row. However, this function is
> > not defined for chron objects. Does anybody know of alternatives to create
> > such a sequence?
> >
>
> The 'zoo' package has na.locf which stands for Last Occurrence Carried
> Forward, which is what I believe you want.
>
> First let us create some test data, x:
>
> > library(chron); library(zoo)
> > x <- chron(c(1.5, 2, NA, NA, 4, NA))
> > x

> [1] (01/02/70 12:00:00) (01/03/70 00:00:00) (NA NA)
> [4] (NA NA) (01/05/70 00:00:00) (NA NA)
>
> > # na.locf is intended for zoo objects but we can convert
> > # the chron object to zoo, apply na.locf and convert back:

>
> > chron(as.vector(na.locf(zoo(as.vector(x)))))

> [1] (01/02/70 12:00:00) (01/03/70 00:00:00) (01/03/70 00:00:00)
> [4] (01/03/70 00:00:00) (01/05/70 00:00:00) (01/05/70 00:00:00)
>

Just to reply to my own post, it can actually be done even more simply:

chron(na.locf(as.vector(x)))

Also in re-reading my post, I think the O in locf stands for observation rather than occurrence.



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed May 18 09:48:21 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:31:50 EST