[R] read "4-jan-02" as date

Peter Dalgaard p.dalgaard at biostat.ku.dk
Mon Oct 11 18:50:06 CEST 2004


bogdan romocea <br44114 at yahoo.com> writes:

> Dear R users,
> 
> I have a column with dates (character) in a data frame:
> 12-Jan-01 11-Jan-01 10-Jan-01 9-Jan-01  8-Jan-01  5-Jan-01
> and I need to convert them to (Julian) dates so that I can
> sort the whole data frame by date. I thought it would be
> very simple, but after checking the documentation and the
> list I still don't have something that works.
> 
> 1. as.Date returns the error below. What am I doing wrong?
> As far as I can see the character strings are in standard
> format.
> d$Date <- as.Date(d$Date, format="%d-%b-%y")
> Error in fromchar(x) : character string is not in a
> standard unambiguous format

Odd. Works for me:

> as.Date("4-Jan-02", format="%d-%b-%y")
[1] "2002-01-04"
 
Which is your R version (and OS, this stuff sometimes relies on system
routines)? 

You do have to watch out for locale dependencies though:

> as.Date("4-Okt-02", format="%d-%b-%y")
[1] NA

and vice versa if you try to read "Oct" in a Danish locale. However,
shouldn't give the error message that you see.  
 
> 2. as.date {Survival} produces this error,
> d$Date <- as.date(d$Date, order = "dmy")
> Error in as.date(d$Date, order = "dmy") : Cannot coerce to
> date format
> 
> 3. Assuming all else fails, is there a text function
> similar to SCAN in SAS? Given a string like "9-Jan-01" and
> "-" as separator, I'd like a function that can read the
> first, second and third values (9, Jan, 01), so that I can
> get Julian dates with mdy.date {survival}.

gsub() should do the trick, e.g.:

> x
[1] "4-jan-02"
> gsub("([^-]*)-([^-]*)-([^-]*)", "\\1", x)
[1] "4"
> gsub("([^-]*)-([^-]*)-([^-]*)", "\\2", x)
[1] "jan"
> gsub("([^-]*)-([^-]*)-([^-]*)", "\\3", x)
[1] "02"


-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907




More information about the R-help mailing list