On Fri, Jun 8, 2012 at 4:01 AM, Agustin Lobo <agustin.l...@ictja.csic.es> wrote: > Hi! > Is not there an standard R function to retrieve the day of the year > (since 1st Jan of the same year)? > I know I can make my own using julian, but find it weird that having > days(), months() etc doy() does not exist as an standard function. > > Also, is the following not a bit inconsistent? > >> a <- chron("20100506",format="ymd") >> a > [1] 100506 >> years(a) > [1] 2010 > Levels: 2010 > > but instead have to cast to Date to apply julian: >> julian(a) > Error in names(d) : 'd' is missing >> julian(as.Date(a)) > [1] 14735 > attr(,"origin") > [1] "1970-01-01" >
First note that ymd does not work without a separator. We get a number rather than a chron date: > chron("20100506",format="ymd") [1] 100506 Instead do it like this: > a <- as.chron("20100506", format = "%Y%m%d"); a [1] (05/06/10 00:00:00) > as.numeric(format(as.Date(a), format = "%j")) [1] 126 If there are no times involved it might be simpler just to use Date in the first place: > d <- as.Date("20100506", format = "%Y%m%d"); d [1] "2010-05-06" > as.numeric(format(d, format = "%j")) [1] 126 See ?strptime -- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com ______________________________________________ R-help@r-project.org 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.