2011-12-19 49 views
0

這應該非常簡單。我有一個動物園對象500次系列(每一個不同的產品)和250個銷售週期。動物園對象完全是矩形的,所有系列都包含每個時間點的觀察。我的索引欄是一個非常簡單的1 ... 250,如何在一個動物園對象內SUM多個列

我的困難在於試圖將所有時間序列聚合在一起形成一個「總銷售」系列。

我試過使用聚合,這似乎集中在聚合行例如幾天到幾個月。但我想保持每一段時間,只是將時間序列聚合在一起。這是我下面顯示的動物園對象的簡化版本,只有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 

當我嘗試使用以下兩個命令之一進行聚合時,我得到的數據與我原始動物園對象中的完全相同!

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

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

但是我能夠通過這樣做來聚合,儘管500列是不現實的!如果可能,我想避免使用循環。

z.all[,1] + z.all[,2] 

道歉,如果這不是正確的協議,這是我在這個網站的第一篇文章。

回答

3

我希望我能正確理解你想要的東西。但如果這是你正在尋找一個rowsum:

rowSums(z.all) 

直接從base包。 (?rowSums)。這個函數將所有的值沿着一行:

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的知識缺乏。 – 2011-12-19 13:21:18

+1

請注意,如果您想要獲取動物園對象,然後使用上述答案:'動物園(rowSums(z.all),time(z。所有))'。 – 2011-12-19 14:58:16