[R] Aggregate lag

Achim Zeileis Achim.Zeileis at wu-wien.ac.at
Tue May 10 14:23:59 CEST 2005


On Tue, 10 May 2005 12:55:52 +0200 Matthieu Cornec wrote:

> hello,
> 
> Does anybody know how to aggregate a lag series ?
> when I try to use aggregate I get the following message
> 
> > try<-ts(1:100,start=c(1985,1),freq=12)
> > aggregate(try,4,mean,na.rm=T)
>     Qtr1 Qtr2 Qtr3 Qtr4
> 1985    2    5    8   11
> 1986   14   17   20   23
> 1987   26   29   32   35
> 1988   38   41   44   47
> 1989   50   53   56   59
> 1990   62   65   68   71
> 1991   74   77   80   83
> 1992   86   89   92   95
> 1993   98
> > aggregate(lag(try,-1),4,mean,na.rm=T)
> Error in rep.int("", start.pad) : invalid number of copies in rep()

The ts-method seems to expect full blocks of observations. Note, that
also the last observation (100 in April 1993) is dropped from the
aggregate call above. I'm not sure what is the recommended way to
circumvent this problem with "ts": probably, you have to do some padding
with NAs yourself.

Example:
R> x <- ts(1:20,start=c(1990,1),freq=12)
R> aggregate(window(x, start = c(1990, 1), end = c(1991, 9), 
     extend = TRUE), 4, mean, na.rm = TRUE)
     Qtr1 Qtr2 Qtr3 Qtr4
1990  2.0  5.0  8.0 11.0
1991 14.0 17.0 19.5     
R> aggregate(window(lag(x, k = -1), start = c(1990, 1),
     end = c(1991, 9), extend = TRUE), 4, mean, na.rm = TRUE)
     Qtr1 Qtr2 Qtr3 Qtr4
1990  1.5  4.0  7.0 10.0
1991 13.0 16.0 19.0     

In zoo this can be done a bit easier:
R> z <- zooreg(1:20, start = yearmon(1990), freq = 12)
R> aggregate(z, as.yearqtr(time(z)), mean)
1990 Q1 1990 Q2 1990 Q3 1990 Q4 1991 Q1 1991 Q2 1991 Q3 
    2.0     5.0     8.0    11.0    14.0    17.0    19.5 
R> aggregate(lag(z, k = -1), as.yearqtr(time(lag(z, -1))), mean)
1990 Q1 1990 Q2 1990 Q3 1990 Q4 1991 Q1 1991 Q2 1991 Q3 
    1.5     4.0     7.0    10.0    13.0    16.0    19.0 

hth,
Z
 
> Matthieu
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>




More information about the R-help mailing list