[R] Extracting part of date variable
John Kane
jrkrideau at yahoo.ca
Thu Feb 1 15:18:52 CET 2007
Thank you Peter.
It was not my question but I was just about to start
the morning's work by searching Help and RSiteSearch()
for this exact question.
--- Peter Dalgaard <P.Dalgaard at biostat.ku.dk> wrote:
> stat stat wrote:
> > Dear all,
> >
> > Suppose I have a date variable:
> >
> > c = "99/05/12"
> >
> > I want to extract the parts of this date like
> month number, year and day. I can do it in SPSS. Is
> it possible to do this in R as well?
> >
> > Rgd,
> >
> >
> Yes. One way is to use substr(), e.g.:
>
> > substr(c,1,2)
> [1] "99"
> > as.numeric(substr(c,1,2))
> [1] 99
>
> This also nicely sidesteps the ambiguity issue: 1999
> or 1899? May or
> December? On the other hand, you'll get in trouble
> if leading zeros are
> sometimes absent (strsplit() or gsub() if you want
> to pursue that route
> further).
>
> For a more principled approach, use the time and
> date handling tools.
> Assuming that you can live with the system defaults
> for 2-digit years,
>
> > strptime(c,format="%y/%m/%d")
> [1] "1999-05-12"
> > strptime(c,format="%y/%m/%d")$year
> [1] 99
> > strptime(c,format="%y/%m/%d")$mon
> [1] 4
> > strptime(c,format="%y/%m/%d")$mday
> [1] 12
>
> Beware the peculiarities of the entries defined by
> POSIX standard, see
> ?DateTimeClasses, and also:
>
> '%y' Year without century (00-99). If you use
> this on input, which
> century you get is system-specific. So
> don't! Often values
> up to 69 (or 68) are prefixed by 20 and
> 70(or 69) to 99 by
> 19.
>
> (I'm at a bit of a loss as to fixing up two digit
> years once the damage
> has been done. Presumably, you can just diddle the
> year field, but I'm a
> bit uneasy about the fact that 2000 was a leap year
> and 1900 was not.)
>
>
>
> --
> 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
>
> ______________________________________________
> R-help at 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
> and provide commented, minimal, self-contained,
> reproducible code.
>
More information about the R-help
mailing list