[R] How do I use as.Date when day values are missing?

Gabor Grothendieck ggrothendieck at gmail.com
Mon Feb 25 14:12:46 CET 2008


On Mon, Feb 25, 2008 at 7:40 AM, Peter Dalgaard
<P.Dalgaard at biostat.ku.dk> wrote:
>
> Gabor Grothendieck wrote:
> > On Mon, Feb 25, 2008 at 6:03 AM, Peter Dalgaard
> > <P.Dalgaard at biostat.ku.dk> wrote:
> >
> >> Gabor Grothendieck wrote:
> >>
> >>> In looking at this again here is a slight simplification.  Its now
> >>> only one line:
> >>>
> >>>
> >>>
> >>>> library(chron)
> >>>> x <- c("01/00/05", "01/22/06")
> >>>> as.chron(sub("/00/", "/15/", x)) + (regexpr("/00/", x) > 0) / 2
> >>>>
> >>>>
> >>> [1] (01/15/05 12:00:00) (01/22/06 00:00:00)
> >>>
> >>>
> >> You don't really need chron here, do you?
> >>
> >> as.Date(sub("/00/", "/15/", x), format="%m/%d/%y")
> >>
> >> (The format spec seems to have been left out below. Also, beware the
> >> system-dependence of %y.)
> >>
> >
> > Yes, you need chron since entire point was to encode the missings as
> > noon so one can reverse the procedure and Date does not support times.
> > Also the format was omitted because its not required.  m/d/y is the default
> > for chron.
> >
> But the _original_ question involved as.Date and was missing the format
> in its sample code:
>
> > > interesting.data$date
> >
> [1] "1/22/93" "1/22/93" "1/23/93" "1/00/93" "1/28/93" "1/31/93" "1/12/93"
>
> > > as.Date(interesting.data$date)
> >
> [1] "1993-01-22" "1993-01-22" "1993-01-23" NA "1993-01-28" "1993-01-31" "1993-01-12"
>
>
> Encoding missing values as a specific time of day was your own invention
> and might as well be done otherwise, e.g. as
>
> missingDate <- (regexpr("/00/", x) > 0)
>
>

But the whole point of this seems to be to encode the data in a single
vector of dates.



More information about the R-help mailing list