On Wed, Aug 11, 2010 at 2:38 PM, steven mosher <mosherste...@gmail.com> wrote: > The colMeans comes closest, > for a single series the assume you have 100 years of monthly data. > The mean you want to scale by is the mean for a restricted period in the > center > of the series.. say 1950-1960 > for this period you have the average jan (1950-1960) average feb, ect. > your final series would be > jan 1900 - average jan(1950-60) > feb 1990 - average feb > .... > jan 2000 - average jan(1950-60) > Which gives you a scaling that is not relative to the mean of the whole, but > relative to a base period which is selctable. > BTW switching to zoo has greatly simplified the code. >
Try this to demean by column means for the years 2003 to 2007 inclusive even though the series extends beyond that in both directions: > z <- zoo(cbind(a = 1:10, b = (1:10)^2), 2001:2010) > sweep(z, 2, colMeans(window(z, 2003:2007))) a b 2001 -4 -26 2002 -3 -23 2003 -2 -18 2004 -1 -11 2005 0 -2 2006 1 9 2007 2 22 2008 3 37 2009 4 54 2010 5 73 ______________________________________________ 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.