[R] Duplicate dates in zoo objects

Joris Meys jorismeys at gmail.com
Tue Jun 22 19:32:59 CEST 2010


Oops, I was too fast. I meant :

i <- length(x)- match(unique(index(x)),rev(index(x)))+1

(one has to reverse the indices again)

But in any case, the aggregate-way is indeed far cleaner. Thx for
pointing that out.
Cheers
Joris

On Tue, Jun 22, 2010 at 7:24 PM, Achim Zeileis <Achim.Zeileis at uibk.ac.at> wrote:
> 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.
>



-- 
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



More information about the R-help mailing list