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
Try this :> x.Date <- as.Date("2003-02-01") + c(1, 3, 7, 7, 14) - 1> x <- zoo(1:5, x.Date)> x2003-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 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
On Tue, 22 Jun 2010, Research 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?No, it's very simple and covered as the #1 item in the zoo FAQ: vignette("zoo-faq", package = "zoo")> 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)You can use aggregate() to remove the duplicates: For example aggregate(x, time(x), mean) would use the mean price for each Date. If you want to compute the last observation, the function tail(..., 1) can be utilized: aggregate(x, time(x), tail, 1) Best, Z> 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. >
See the aggregate= argument to read.zoo which will aggregate them as it reads them in like this:> library(zoo) > Lines <- "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"> > tail1 <- function(x) tail(x, 1) > z <- read.zoo(textConnection(Lines), format = "%d/%m/%Y", aggregate = tail1) > z1995-10-02 1995-10-30 1996-01-23 1996-03-04 1996-04-03 1996-05-03 1996-05-31 4925.5 4915.9 5009.2 5006.5 5069.2 5103.7 5107.1 1996-07-01 1996-08-02 5153.1 5151.7 On Tue, Jun 22, 2010 at 10:35 AM, 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. >