2011-12-19 9 views
0

これは非常に簡単です。私は500回のシリーズ(それぞれ異なる製品)と250の販売期間を持つ動物園のオブジェクトを持っています。動物園のオブジェクトは完全に長方形で、すべてのシリーズには各時点での観測が含まれています。私のインデックスの列は非常にシンプルな1 ... 250、動物園のオブジェクト内で複数の列を合計する方法

私の難しさは、 "トータルセールス"シリーズを構成するすべての時系列を集計しようとしています。

私は集計を使用しようとしました。数ヶ月に数日。しかし、私は時系列をまとめるだけで、あらゆる時間を維持したいと思っています。これは私の動物園のオブジェクトの簡略化されたバージョンで、5シリーズしかありません。

head(z.all) 

    1  2   3  4  5 
1 1232.205 1558.056 993.9784 1527.066 359.6946 

2 1262.194 1665.084 1092.0105 1834.313 484.5073 

3 1301.034 1528.607 900.4158 1587.548 525.5191 

4 1014.082 1352.090 1085.6376 1785.034 490.9164 

5 1452.149 1623.015 1197.3709 1944.189 600.5150 

6 1463.359 1205.948 1155.0340 1528.887 556.6371 

次の2つのコマンドのいずれかを使用して集計しようとすると、私のオリジナルの動物園のオブジェクトとまったく同じデータが得られます!!

aggregate(z.all[,1:num.series], index(z.all), sum) 

aggregate(z.all, index(z.all), sum) 

しかし、これを行うことで集計することはできますが、500個の列は現実的ではありません。可能であれば、ループを使用しないでください。

これが正しいプロトコルではない場合は、このサイトで私の最初の投稿です。

答えて

3

私はあなたが望むものを正しく理解したと思います。しかし、それはあなたが探しているrowsumの場合:baseパッケージから直接

rowSums(z.all) 

。 (?rowSums)。この関数は、1つの行に沿ったすべての値を加算:

D<-cbind(rep(1,10),c(1:10)) 
colSums(D) 
    [1] 10 55 
rowSums(D) 
    [1] 2 3 4 5 6 7 8 9 10 11 

反対の各列を合計することになるcolSums()あろう。

+0

すばらしい、ありがとう。私はそれが単純でなければならず、Rに関する知識が不足していることを知っていました。 –

+1

zooオブジェクトを取得したい場合は、上記の答えを利用してください: 'zoo(rowSums(z.all)、time(z。すべて)) '。 –

関連する問題