So if one create the xts with POSIXct and indexClass(x)<-"Date",  he will
get the display in date.   But if he  wants to merge two time series
according to the displayed date instead of time,  he has to convet the index
to Date before the merge.   indexClass(x) will not do the magic here.    I
have just meet this situation.

Thanks Gabor.


On Sun, Jul 26, 2009 at 10:09 AM, Gabor Grothendieck <
ggrothendieck@gmail.com> wrote:

> The conversion to or from Date occurs when you store it (as you
> noticed) or print it out or otherwise try to use it in a context that
> requires a Date.  Your example does not do any of those so no
> conversion was needed.  Try this:
>
> > system.time(print(x))
>   ...
>   user  system elapsed
>   0.39    0.00    0.39
>
> > system.time(print(t))
>  ...
>   user  system elapsed
>   0.08    0.00    0.11
>
>
> On Sat, Jul 25, 2009 at 9:38 PM, Michael<michaellibeijing@gmail.com>
> wrote:
> > Thanks for detailed explanation and demo codes.indexClass(x)<-"Date  is
> > great for its speed.   And easier than  as.Date(x).   as.Date(x)  will
> > change the date to UTC for POSIXct automatically no matter whether you
> like
> > it or not.   It seems indexClass(x)<-"Date will not change the time zone
> of
> > the date, which is exactly what I need.
> > The following codes meet my needs exactly with high speed.
> >> library(quantmod)
> >>
> >> pr<-matrix(rnorm(20000),nrow=5000,ncol=4)
> >> t<-Sys.time()+(1:5000)*24*3600
> >> system.time(x<-xts(pr,t))
> >   user  system elapsed
> >      0       0       0
> >> head(x)
> >                          [,1]       [,2]        [,3]        [,4]
> > 2009-07-27 09:35:39  0.6735081 -2.0724029 -2.36234114 -0.74839095
> > 2009-07-28 09:35:39 -1.7756642  0.7624485 -2.15179721 -0.98905882
> > 2009-07-29 09:35:39  1.2053857 -1.5182344  0.12540278 -0.02926681
> > 2009-07-30 09:35:39 -0.5301832  0.3087448 -0.46227937 -1.03176589
> > 2009-07-31 09:35:39 -0.9061220  1.2160150 -0.85206307 -1.13925796
> > 2009-08-01 09:35:39 -0.2954440  0.7048516  0.03260057  2.04602758
> >> system.time(indexClass(x)<- "Date")
> >   user  system elapsed
> >      0       0       0
> >> head(x)
> >                 [,1]       [,2]        [,3]        [,4]
> > 2009-07-27  0.6735081 -2.0724029 -2.36234114 -0.74839095
> > 2009-07-28 -1.7756642  0.7624485 -2.15179721 -0.98905882
> > 2009-07-29  1.2053857 -1.5182344  0.12540278 -0.02926681
> > 2009-07-30 -0.5301832  0.3087448 -0.46227937 -1.03176589
> > 2009-07-31 -0.9061220  1.2160150 -0.85206307 -1.13925796
> > 2009-08-01 -0.2954440  0.7048516  0.03260057  2.04602758
> >>
> >
> > Thanks Jeff and Gabor.
> >
> > Michael
> >
> >
> > On Sat, Jul 25, 2009 at 10:46 PM, Jeff Ryan <jeff.a.ryan@gmail.com>
> wrote:
> >
> >> An example to clarify/confuse ;)
> >>
> >> > system.time(px<-xts(pr,t))
> >>   user  system elapsed
> >>  0.001   0.001   0.002
> >> > system.time(dx<-xts(pr,d))
> >>   user  system elapsed
> >>  0.164   0.004   0.168
> >> > indexClass(dx)
> >> [1] "Date"
> >> > indexClass(px)
> >> [1] "POSIXt"  "POSIXct"
> >>
> >> ##  in POSIXct time as expected
> >> > head(px)
> >>                          [,1]       [,2]       [,3]       [,4]
> >> 2009-07-26 09:39:32  0.6739000  0.6124116 -0.5820407  0.1022264
> >> 2009-07-27 09:39:32 -0.7806308 -0.4988508 -0.5448239 -0.5649892
> >> 2009-07-28 09:39:32  1.0275375 -0.8538655 -0.6098992  1.9661175
> >> 2009-07-29 09:39:32  0.6268532 -0.3144514  1.0142005 -0.2303953
> >> 2009-07-30 09:39:32 -3.8062200 -0.3875341 -0.9251609 -0.4677076
> >> 2009-07-31 09:39:32 -1.1192617 -0.6575085 -0.9918533 -0.8743504
> >>
> >> > head(dx)
> >>                 [,1]       [,2]       [,3]       [,4]
> >> 2009-07-26  0.6739000  0.6124116 -0.5820407  0.1022264
> >> 2009-07-27 -0.7806308 -0.4988508 -0.5448239 -0.5649892
> >> 2009-07-28  1.0275375 -0.8538655 -0.6098992  1.9661175
> >> 2009-07-29  0.6268532 -0.3144514  1.0142005 -0.2303953
> >> 2009-07-30 -3.8062200 -0.3875341 -0.9251609 -0.4677076
> >> 2009-07-31 -1.1192617 -0.6575085 -0.9918533 -0.8743504
> >> > indexClass(px) <- "Date"
> >>
> >> ### simply convert the indexClass -- this is essentially costless,
> >> ### and now you have an xts object 'indexed' by Date
> >> > head(px)
> >>                 [,1]       [,2]       [,3]       [,4]
> >> 2009-07-26  0.6739000  0.6124116 -0.5820407  0.1022264
> >> 2009-07-27 -0.7806308 -0.4988508 -0.5448239 -0.5649892
> >> 2009-07-28  1.0275375 -0.8538655 -0.6098992  1.9661175
> >> 2009-07-29  0.6268532 -0.3144514  1.0142005 -0.2303953
> >> 2009-07-30 -3.8062200 -0.3875341 -0.9251609 -0.4677076
> >> 2009-07-31 -1.1192617 -0.6575085 -0.9918533 -0.8743504
> >> > system.time(indexClass(px) <- "Date")
> >>   user  system elapsed
> >>  0.001   0.001   0.001
> >>
> >> Now convert back, and see if something like merge cares about the
> >> index class... (hint: it doesn't)
> >>
> >> > system.time(indexClass(px) <- c("POSIXt","POSIXct"))
> >>   user  system elapsed
> >>  0.001   0.000   0.000
> >> > indexClass(px)
> >> [1] "POSIXt"  "POSIXct"
> >> > head(px)
> >>                          [,1]       [,2]       [,3]       [,4]
> >> 2009-07-26 09:39:32  0.6739000  0.6124116 -0.5820407  0.1022264
> >> 2009-07-27 09:39:32 -0.7806308 -0.4988508 -0.5448239 -0.5649892
> >> 2009-07-28 09:39:32  1.0275375 -0.8538655 -0.6098992  1.9661175
> >> 2009-07-29 09:39:32  0.6268532 -0.3144514  1.0142005 -0.2303953
> >> 2009-07-30 09:39:32 -3.8062200 -0.3875341 -0.9251609 -0.4677076
> >> 2009-07-31 09:39:32 -1.1192617 -0.6575085 -0.9918533 -0.8743504
> >> > head(dx)
> >>                 [,1]       [,2]       [,3]       [,4]
> >> 2009-07-26  0.6739000  0.6124116 -0.5820407  0.1022264
> >> 2009-07-27 -0.7806308 -0.4988508 -0.5448239 -0.5649892
> >> 2009-07-28  1.0275375 -0.8538655 -0.6098992  1.9661175
> >> 2009-07-29  0.6268532 -0.3144514  1.0142005 -0.2303953
> >> 2009-07-30 -3.8062200 -0.3875341 -0.9251609 -0.4677076
> >> 2009-07-31 -1.1192617 -0.6575085 -0.9918533 -0.8743504
> >> > system.time(merge(dx,dx))
> >>   user  system elapsed
> >>  0.001   0.000   0.002
> >> > system.time(merge(px,px))
> >>   user  system elapsed
> >>  0.001   0.000   0.002
> >>
> >> ### Caveat: converting back and forth is a bit silly, and possibly
> >> perilous, but it is
> >> ### illustrative of what you can do with xts
> >>
> >> HTHsomewhat
> >>
> >> Jeff
> >>
> >> On Sat, Jul 25, 2009 at 7:59 AM, michael li<michaellibeijing@gmail.com>
> >> wrote:
> >> > I like xts because  subsetting is easier.  Something like
> x["2009-08"].
> >> > But it seems that xts() is a little slower than zoo() when converting
> >> > data with date index instead of time index.
> >> >
> >> >> pr<-matrix(rnorm(20000),nrow=5000,ncol=4)
> >> >> t<-Sys.time()+(1:5000)*24*3600
> >> >> d<-as.Date(t)
> >> >> system.time(x<-zoo(pr,t))
> >> >   user  system elapsed
> >> >      0       0       0
> >> >> system.time(x<-zoo(pr,d))
> >> >   user  system elapsed
> >> >      0       0       0
> >> >> system.time(x<-xts(pr,t))
> >> >   user  system elapsed
> >> >      0       0       0
> >> >> system.time(x<-xts(pr,d))
> >> >   user  system elapsed
> >> >   0.34    0.00    0.35
> >> >
> >> > Regards,
> >> > Michael
> >> >
> >> > _______________________________________________
> >> > R-SIG-Finance@stat.math.ethz.ch mailing list
> >> > https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> >> > -- Subscriber-posting only.
> >> > -- If you want to post, subscribe first.
> >> >
> >>
> >>
> >>
> >> --
> >> Jeffrey Ryan
> >> jeffrey.ryan@insightalgo.com
> >>
> >> ia: insight algorithmics
> >> www.insightalgo.com
> >>
> >
> >        [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-SIG-Finance@stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> > -- Subscriber-posting only.
> > -- If you want to post, subscribe first.
> >
>

	[[alternative HTML version deleted]]

