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

Peter Dalgaard P.Dalgaard at biostat.ku.dk
Mon Feb 25 13:40:32 CET 2008


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)


-- 
   O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)                  FAX: (+45) 35327907



More information about the R-help mailing list