[R] aggregate.ts
Achim Zeileis
Achim.Zeileis at wu-wien.ac.at
Wed Jul 25 03:06:12 CEST 2007
On Wed, 25 Jul 2007, laimonis wrote:
> Consider the following scrap of code:
...slightly modified to
x1 <- ts(1:24, start = c(2000, 10), freq = 12)
x2 <- ts(1:24, start = c(2000, 11), freq = 12)
and then
y1 <- aggregate(x1, nfreq = 4)
gives the desired result while
y2 <- aggregate(x2, nfreq = 4)
probably does not what you would like it to do. In both cases, the 24
observations are broken into 8 segments of equal length (as documented on
?aggregate.ts) and then aggregated. Therefore
as.vector(y1)
as.vector(y2)
are identical (and not matched by quarter...as you would probably like).
> And don't tell me that the aggregating a monthly series into quarters
> makes no sense!! (see response to Bug 9798).
1. Your tone is not appropriate.
2. You're not quoting the reply correctly. It said: "You cannot aggregate
a time series that does not run over quarters into quarters. The
speculation is plain wrong."
The reply means that aggregate.ts() does not do what you think
it does. As I tried to illustrate with the example above.
One can probably argue about whether it makes sense to aggregate a monthly
time series into quarter when I don't have complete observations in each
quarter. But maybe it might be worth considering a change in
aggregate.ts() so that the old and new frequency are matched even with
incomplete observations?
Currently, the "zoo" implementation allows this: Coercing back and forth
gives:
library("zoo")
z1 <- as.ts(aggregate(as.zoo(x1), as.yearqtr, sum))
z2 <- as.ts(aggregate(as.zoo(x2), as.yearqtr, sum))
where z1 is identical to y1, and z2 is what you probably want.
hth,
Z
More information about the R-help
mailing list