## pretty.ct function(x,specs=pretty.ct.specs) ## round.ct function(x, tstr='1 min' ) ## axis.ct function(side,x,specs=NULL,...) ## parse.timeint function(dv) ## parse.tstr function(tstr) ## pretty.ct.specs default value for the 'specs' argument of pretty.ct()
pretty.ct() is a 'pretty' function for POSIXt objects. It implements my idea of what is pretty, which is dependent on the time scale, and with the default specs prefers hours in multiples of 3, 6, or 12, and days in multiples of 7 or 14.
round.ct() serves the same purpose as round.POSIXt(), but allows rounding to multiples of the time unit, i.e., '15 min' , '2 hours', and the like.
axis.ct() serves the same purpose as axis.POSIXct() but selects tick values and intervals using pretty.ct(). Surprisingly, axis.ct() is significantly faster than axis.POSIXct() when passed a long vector.
The two parse functions translate strings like '10 min' or '36 h' to other more useable forms. These are based on code found in an early version of seq.POSIXct(), written, I believe, by Prof. Ripley.
A few examples are below.
If there is interest, I can send the source code, and will write Rd files for them.
-Don
hrs <- 3600 dys <- 24*hrs
## ## time range 60 hours ## pretty.ct() chooses 3 hours as a pretty interval ## nhr <- 60
[1] "2002-06-15 03:00:00 PDT" "2002-06-15 06:00:00 PDT" "2002-06-15 09:00:00 PDT" "2002-06-15 12:00:00 PDT"t1 <- ISOdatetime(2002,6,14,0,0,0)+hrs*runif(5,0,nhr) pretty.ct(t1)
[5] "2002-06-15 15:00:00 PDT" "2002-06-15 18:00:00 PDT" "2002-06-15 21:00:00 PDT" "2002-06-16 00:00:00 PDT"
[9] "2002-06-16 03:00:00 PDT" "2002-06-16 06:00:00 PDT" "2002-06-16 09:00:00 PDT"
t1 <- sort(t1) cbind(format(t1),format(round.ct(t1,'6 h')))
[,1] [,2] [1,] "2002-06-15 02:49:03" "2002-06-15 00:00:00" [2,] "2002-06-15 04:40:25" "2002-06-15 06:00:00" [3,] "2002-06-15 11:12:29" "2002-06-15 12:00:00" [4,] "2002-06-15 14:47:43" "2002-06-15 12:00:00" [5,] "2002-06-16 09:01:32" "2002-06-16 12:00:00"
## ## time range 65 days ## pretty.ct() chooses 1 week as a pretty interval ##
[1] "2002-06-23 PDT" "2002-06-30 PDT" "2002-07-07 PDT" "2002-07-14 PDT" "2002-07-21 PDT" "2002-07-28 PDT" "2002-08-04 PDT"ndy <- 65 t2 <- ISOdatetime(2002,6,24,0,0,0)+ndy*dys*(0:5)/5 pretty.ct(t2)
[8] "2002-08-11 PDT" "2002-08-18 PDT" "2002-08-25 PDT"
cbind(format(t2),format(round.ct(t2,'1 w')))
[,1] [,2] [1,] "2002-06-24" "2002-06-23" [2,] "2002-07-07" "2002-07-07" [3,] "2002-07-20" "2002-07-21" [4,] "2002-08-02" "2002-08-04" [5,] "2002-08-15" "2002-08-18" [6,] "2002-08-28" "2002-08-25"
## ## the parse functions ##
parse.tstr('36 h')
$secs [1] 129600
$nunits [1] 36
$units [1] "hours"
$tstr [1] "36 h"
parse.timeint('36 h')[1] 129600
## ## speed comparison ##
t8 <- structure(sort(runif(100000,1017820800,2*1017820800)),class=c('POSIXt','POSIXct'))[1] 0.65 0.02 0.69 0.00 0.00
plot(t8,1:100000,xaxt='n',pch=3)
system.time(axis.ct(1,t8))
system.time(axis.POSIXct(1,t8))[1] 11.94 0.00 12.07 0.00 0.00
version
_ platform sparc-sun-solaris2.7 arch sparc os solaris2.7 system sparc, solaris2.7 status major 1 minor 7.1 year 2003 month 06 day 16 language R
-- -------------------------------------- Don MacQueen Environmental Protection Department Lawrence Livermore National Laboratory Livermore, CA, USA
______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-devel
