Given a long zoo matrix, the goal is to "sweep" out a statistic from the entire length of the sequences.
longzoomatrix<-zoo(matrix(rnorm(720),ncol=6),as.yearmon(outer(1900,seq(0,length=120)/12,"+"))) cnames<-c(12345,23456,34567,45678,56789,67890) colnames(longzoomatrix)<-cnames longzoomatrix[1:24,] 12345 23456 34567 45678 56789 67890 Jan 1900 -0.17123165 1.02087086 0.79514870 -0.54519494 -0.13025459 -0.009980402 Feb 1900 1.21729926 -0.74541038 -0.08138406 -2.01180775 0.19256998 0.551965871 Mar 1900 1.13222481 -1.25315703 0.01013473 0.08366155 -0.84246010 -1.405959298 Apr 1900 -0.02352559 -1.25001473 -1.53570550 -0.17945324 0.33368133 2.045125104 May 1900 2.08204920 1.28091067 -0.80888146 0.31796730 0.83248551 1.439049603 Jun 1900 0.62209570 -0.66189249 -0.57923119 -0.04346112 -2.71353384 -0.346826902 Jul 1900 -1.39758918 -0.54525469 -0.05230070 -0.36725079 1.28281798 1.391174712 Aug 1900 0.12594069 0.09303970 0.69916411 -1.01902352 -0.82720898 -0.208113626 Sep 1900 -0.34310543 0.41718435 0.79455765 1.13234707 0.14652667 -0.551426097 Oct 1900 1.70634123 -1.20073104 -1.08771551 -0.01715296 0.24931996 -0.753481196 Nov 1900 0.15224070 -0.05108370 -0.97410069 0.51130170 0.13880814 -2.160811186 Dec 1900 0.34726817 0.61830719 0.84429979 -0.26253635 0.95243068 -0.533562966 Jan 1901 0.28647563 -0.40650198 -1.19640622 0.70267162 0.18867804 0.098855045 Feb 1901 1.27269836 0.31797472 -1.13038040 1.33654480 0.08885501 -0.134690872 Mar 1901 -1.36934330 -0.17244539 0.81705554 -0.09113888 0.90241413 0.473939164 Apr 1901 -0.89768498 0.82497595 0.15684387 2.25294476 -1.72886103 -0.104769411 May 1901 -0.27898445 -1.24348285 1.36203180 0.02422083 -1.33745980 1.098856752 Jun 1901 -0.67968801 0.42082064 0.47056133 -0.12981223 0.19445803 -0.284638114 Jul 1901 0.03791761 -0.22118130 1.96044737 -1.18280989 0.90075205 0.055720535 Aug 1901 1.12904079 0.57177055 0.64300572 -0.16284983 0.07951656 -0.159396821 Sep 1901 -1.43513934 0.03036697 1.09039400 0.99201776 0.98744827 -0.057234838 Oct 1901 0.73828382 0.53967835 2.16608282 -0.82929778 -1.99666687 0.352778450 Nov 1901 0.06561583 -1.20126258 0.67427027 0.15493106 0.08867697 1.223073528 Dec 1901 -1.23347027 -1.09699304 0.59398031 -0.22269292 -0.21569543 1.389667825 The statistic to be swept out is itself a zoo series with matching column names. There are twelve valies for each column representing an monthly average for that series. The average is to be subtracted sweepzoo<-zoo(matrix(rnorm(72),ncol=6), frequency=12) colnames(sweepzoo)<-cnames sweepzoo 12345 23456 34567 45678 56789 67890 1(1) -2.5569706 -0.4375741 -0.1803866 -0.6303760 -0.08995198 2.7293244 2(1) 1.4154202 0.2559212 0.2104513 0.7439446 0.84897905 -0.4144865 3(1) -1.3709275 1.0472759 1.5975148 0.3190503 1.10430959 -1.8285194 4(1) -1.1436430 2.2071763 -0.2637954 -0.4915366 -0.03925020 1.3311624 5(1) -0.8003656 1.6421541 -1.4603128 0.4493069 0.28194066 -0.4728086 6(1) 0.9236015 0.3780122 -1.3848196 0.4263684 0.99584590 -1.4536475 7(1) 0.8810281 0.0381152 0.3810457 -0.6884233 -0.11018089 0.4221188 8(1) 0.3819421 -0.8431364 1.9876901 0.7072257 0.45524929 2.7013515 9(1) -1.1247988 1.3083178 -0.3438442 0.3300832 0.67013503 1.2912443 10(1) -0.3643043 1.0756782 -1.2026318 0.4477054 0.54486700 -0.3369889 11(1) 0.8294049 1.8170357 0.5691249 1.9213791 -0.29295754 -0.2617228 12(1) -1.0085265 -0.7556545 -1.4033321 -0.4646647 -0.14984913 -0.4848657 A brute force way to do this is to repeat the 12 values for each column so that the number of rows in the "sweepzoo" is equal to the nmber of rows on the long zoo, object and then just subtract them. longzoomatrix-sweepzoo As a function sweep() wont work because it expects a vector whose dimensions matches the dimension of the MARGIN. Is there a elegant way to do this short of creating a "sweep zoo" that matches the row dimension of longzoo? ( would be a nice addition to sweep) [[alternative HTML version deleted]] ______________________________________________ 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.