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.zeil...@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 <risk2...@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@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.m...@ugent.be >> ------------------------------- >> Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php >> >> ______________________________________________ >> R-help@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.m...@ugent.be ------------------------------- Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php ______________________________________________ R-help@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.