On Thu, Sep 16, 2010 at 8:50 AM, Michael Green <m...@data-intelligence.dk> wrote: > Dear readers, > > The problem is simple: I have weekly time series data with a maximum > week number of (52,53,52,52) in (2008,2009,2010,2011) respectively. That > means I have a dataset looking like this: > > 2008-01 value > 2008-02 value > . > . > 2011-52 value > > And I would like to turn that data into a plotable zoo object. Now a > simple example containing 4 data points, each being on the December > 28th, would be: > > x <- zoo(rnorm(4), as.Date("2008-12-28")+0:3*365) > plot(x) > > This works fine, but > > y <- zoo(rnorm(4), format(as.Date("2008-12-28")+0:3*365, "%Y-%U")) > plot(y) > > gives me the following warning message: > > Error in plot.window(...) : need finite 'xlim' values In addition: > Warning messages: > 1: In xy.coords(x, y, xlabel, ylabel, log) : NAs introduced by coercion > 2: In min(x) : no non-missing arguments to min; returning Inf > 3: In max(x) : no non-missing arguments to max; returning -Inf > > Anyone knows how to solve this? >
To use a new class of time index you would have to supply an axis method for that class. In this case it might be good enough to map it to numeric (year plus week fraction) like this: as.yearwk <- function(x) { wk <- as.numeric(sub("....-", "", x)) year <- as.numeric(sub("-..", "", x)) lastwk <- as.numeric(format(as.Date(sprintf("%s-12-31", year)), "%U")) year + (wk - 1) / lastwk } library(zoo) # test data set.seed(1) y <- zoo(rnorm(4), format(as.Date("2008-12-28")+0:3*365, "%Y-%U")) # plot yy <- y time(yy) <- as.yearwk(time(yy)) plot(yy) -- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com ______________________________________________ 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.