From: Gabor Grothendieck <ggrothendieck_at_gmail.com>

Date: Tue, 08 Jul 2008 14:37:29 -0400

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. Received on Tue 08 Jul 2008 - 18:42:09 GMT

Date: Tue, 08 Jul 2008 14:37:29 -0400

On Tue, Jul 8, 2008 at 10:25 AM, collonil <manitz.juliane_at_web.de> wrote:

*>
*

> hello,

*>
**> i cant find a solution on this (might be) easy problem:
**>
**> i have a time serie by carlandar weeks, so for every carlendar week i have a
**> value. now i would like to use the functions for time series, so i change
**> structur to a time serie with
**>
**> cam <- ts(number,start=c(2001,1),deltat=7/365)
**> or
**> cam <- ts(number,start=c(2001,1),frequency=52)
**>
**> the problem on it is, that 2004 had 53 calendar weeks, which is not
**> recognized there.
**> it follows with using a saisonal structure the weeks are shifting. f.e.
**> first week in 2005 is conected with the second week in 2004.
**> with the first function leap years are not recognized.
**>
**> is there another function which is recognizing irregularities in the
**> calendar?
**>
*

I assume the main problem is that you want to convert it to a series that has an integral number of cycles per year. To do that some approximation will be required such as:

- omit anything past 52 weeks from each year, or
- create a grid of freq points per year and then take the last point in each grid section or the mean of all points in each grid section

Here is an example using a grid of 52 points per year:

# Suppose we have this data:

library(zoo)

set.seed(1)

z <- zooreg(1:100 + rnorm(100), start = as.Date("2001-01-01"), deltat = 7)

# new.freq() converts dates to a grid of freq points per year # yd is sequence of dates of firsts of years # yy is years of the same sequence # last line interpolates so dates, d, are transformed to year + frac of year new.freq <- function(d, freq = 52) { y <- as.Date(cut(range(d), "years")) + c(0, 367) yd <- seq(y[1], y[2], "year") yy <- as.numeric(format(yd, "%Y")) ceiling(freq * approx(yd, yy, xout = d)$y) / freq}

# take last point in each period

aggregate(z, new.freq, tail, 1)

# or, take mean of all points in each period aggregate(z, new.freq, mean)

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. Received on Tue 08 Jul 2008 - 18:42:09 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Tue 08 Jul 2008 - 19:31:51 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*