[R-SIG-Finance] XTS with unique time stamps?

Jeffrey Ryan jeffrey.ryan at lemnica.com
Mon Jan 31 16:37:02 CET 2011

Brian, Worik

w.r.t the new functionality in xts.

It is so bleeding edge that Brian gave you the wrong name ;-) think
"make [the] index unique".  It probably will also be extended to do
the former removal of subsequent non-unique observations/times as



make.index.unique             package:xts              R Documentation

Force Time Values To Be Unique


     A generic function to force sorted time vectors to be unique.
     Useful for high-frequency time-series where original time-stamps
     may have identical values. For the case of xts objects, the
     default ‘eps’ is set to one-hundred microseconds. In practice this
     advances each subsequent identical time by ‘eps’ over the previous
     (possibly also advanced) value.


     make.index.unique(x, eps = 1e-05, ...)

     make.time.unique(x, eps = 1e-05, ...)


       x: An xts object, or POSIXct vector.

     eps: value to add to force uniqueness.

     ...: unused


     The returned time-series object will have new time-stamps so that
     ‘isOrdered( .index(x) )’ evaluates to TRUE.


     A modified version of x.


     Incoming values must be pre-sorted, and no check is done to make
     sure that this is the case.  If the index values are of
     storage.mode ‘integer’, they will be coerced to ‘double’.


     Jeffrey A. Ryan

See Also:



     ds <- options(digits.secs=6) # so we can see the change

     x <- xts(1:10, as.POSIXct("2011-01-21") + c(1,1,1,2:8)/1e3)


On Mon, Jan 31, 2011 at 6:05 AM, Brian G. Peterson <brian at braverock.com> wrote:
> On Monday, January 31, 2011 12:55:03 am Worik wrote:
>> I am having trouble with non-unique time stamps in an xts.
>> My underlying data has some repeated rows (in a csv file).
>> How can I easily get rid of the duplicates?
>> I feel I must be missing something simple.  If not I can concoct an
>> example to illustrate my problem.
> Worik,
> It depends on what you need.
> If you can remove the rows with duplicated indices, then a construction such
> as:
> myxts<-myxts[!duplicated(index(myxts))]
> should work.
> If you need all of the observations, and need to artificially make them unique
> (as is a common problem with tick data), then you will see discussion in the
> list archives here and other places regarding adding artificial indices to high
> frequency data while preserving order. You will need the latest xts from R-
> Forge and use a construction like this:
> myxts<-make.unique.index(myxts)
> which will (by default) add .00001 sec to each non-unique index after the
> first, preserving order, and providing every observation with a unique index.
> Note that this presumes that the original order of the observations was
> correct in the first place, no provision has been made if you have different
> circumstances.
> Thanks to Jeff Ryan for (very) recently adding this second method.
> Regards,
>  - Brian
> --
> Brian G. Peterson
> http://braverock.com/brian/
> Ph: 773-459-4973
> IM: bgpbraverock
> _______________________________________________
> R-SIG-Finance at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> -- Subscriber-posting only. If you want to post, subscribe first.
> -- Also note that this is not the r-help list where general R questions should go.

Jeffrey Ryan
jeffrey.ryan at lemnica.com


More information about the R-SIG-Finance mailing list