[R] Duplicate dates in zoo objects
Achim Zeileis
Achim.Zeileis at uibk.ac.at
Tue Jun 22 19:24:06 CEST 2010
On Tue, 22 Jun 2010, Joris Meys wrote:
> Try this :
>> x.Date <- as.Date("2003-02-01") + c(1, 3, 7, 7, 14) - 1
>
>> x <- zoo(1:5, x.Date)
>
>> x
> 2003-02-01 2003-02-03 2003-02-07 2003-02-07 2003-02-14
> 1 2 3 4 5
>
>> i <- match(unique(index(x)),rev(index(x)))
>
>> x[i]
> 2003-02-01 2003-02-03 2003-02-07 2003-02-14
> 1 2 4 5
Note that this happens to do the right thing in this particular toy
example but not more generally. Simply adding a single observation will
make it fail. The aggregate() solution I posted previously is preferred:
R> x.Date <- as.Date("2003-02-01") + c(1, 3, 7, 7, 14, 15) - 1
R> x <- zoo(1:6, x.Date)
Warning message:
In zoo(1:6, x.Date) :
some methods for "zoo" objects do not work if the index entries in
'order.by' are not unique
R> x
2003-02-01 2003-02-03 2003-02-07 2003-02-07 2003-02-14 2003-02-15
1 2 3 4 5 6
R> aggregate(x, time(x), tail, 1)
2003-02-01 2003-02-03 2003-02-07 2003-02-14 2003-02-15
1 2 4 5 6
R> i <- match(unique(index(x)),rev(index(x)))
R> x[i]
2003-02-01 2003-02-03 2003-02-07 2003-02-14 2003-02-15
1 2 3 5 6
Best,
Z
> Cheers
> Joris
>
>
> On Tue, Jun 22, 2010 at 4:35 PM, Research <risk2009 at ath.forthnet.gr> wrote:
>> Hello,
>>
>> I have a zoo time series read from an excel file which has some dates the
>> same, such as the following example:
>>
>> 02/10/1995 4925.5
>> 30/10/1995 4915.9
>> 23/01/1996 4963.5
>> 23/01/1996 5009.2
>> 04/03/1996 5031.9 # here
>> 04/03/1996 5006.5 # here
>> 03/04/1996 5069.2
>> 03/05/1996 5103.7
>> 31/05/1996 5107.1
>> 01/07/1996 5153.1
>> 02/08/1996 5151.7
>>
>> Is there a simple way to keep the last price of the ones that have the same
>> dates?
>>
>> 04/03/1996 5031.9
>> 04/03/1996 5006.5
>>
>> i.e., keep only the "04/03/1996 5006.5" price and discard the previous
>> one... Is there an implicit function that does that or do I need some sort
>> of recursive algorithm?
>>
>> You can try a solution on this example (for convenience):
>>
>> x.Date <- as.Date("2003-02-01") + c(1, 3, 7, 7, 14) - 1
>> x <- zoo(rnorm(5), x.Date)
>>
>> Zoo object has 2 prices with same dates.
>>
>> Many thanks in advance,
>> Costas
>>
>> ______________________________________________
>> R-help at 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.
>>
>
>
>
> --
> Joris Meys
> Statistical consultant
>
> Ghent University
> Faculty of Bioscience Engineering
> Department of Applied mathematics, biometrics and process control
>
> tel : +32 9 264 59 87
> Joris.Meys at Ugent.be
> -------------------------------
> Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php
>
> ______________________________________________
> R-help at 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.
>
More information about the R-help
mailing list