On Sun, Nov 27, 2011 at 4:08 PM, Kevin Burton <rkevinbur...@charter.net> wrote:
> I admit it isnt reality but I was hoping through judicious use of these 
> functions I could approximate reality. For example in the years where there 
> are more than 53 weeks in a year I would be happy if there were a way to 
> recognize this and drop the last week of data. If there were less than 53 I 
> would "pad" the year with an extra dummy week. This is just about the same as 
> your suggestion of putting more than 7 days in the first and last weeks. But 
> i still need this kind of date manipulation to even know how many days to add 
> in to make the approximation viable. This kind of best approximation to 
> reality seems better than to settle for the resolution of a month just 
> because it is consistent. Daily would be too much data and even then there 
> would be an approximation due to leap years.
>

OK. As you are willing to regard days past the 364th as part of the
last week of the year then we can do this.

Create a zoo object z as test data.   Then convert its time scale to
year + week/52 where 0 is the first week of the year and we replace
any week that is greater than 51 with 51.  Then we aggregate z by week
taking the last data point in the week and convert it to ts.  Because
of the way we constructed it the frequency will be 52.

library(zoo)

# test data
z <- zoo(1:100, Sys.Date() + 1:100)

yr.wk <- with(as.POSIXlt(time(z)), year + 1900 + pmin(yday %/% 7, 51) / 52)
z.wk <- aggregate(z, yr.wk, tail, 1)
z.ts <- as.ts(z.wk)

frequency(z.ts) # 52

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

Reply via email to