如何SUM动态园对象中的多个列

时间:2011-12-19 12:07:35

标签: r aggregate zoo

这应该非常简单。我有一个动物园对象,有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

当我尝试使用以下两个命令中的任何一个进行聚合时,我得到与原始zoo对象中完全相同的数据!!

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

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

但是我能够通过这样做进行聚合,尽管对于500列来说这是不现实的!我希望尽可能避免使用循环。

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

如果这不是正确的协议,请道歉,这是我在本网站的第一篇文章。

1 个答案:

答案 0 :(得分:3)

我希望我能正确理解你想要的东西。但如果它是你想要的rowum:

 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(),它会对每一列进行求和。