2

这应该非常简单。我有一个动物园对象,它有 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 个命令中的任何一个进行聚合时,我得到的数据与我原来的 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]

抱歉,如果这不是正确的协议,这是我在这个网站上的第一篇文章。

4

1 回答 1

4

我希望我能正确理解你想要什么。但如果它是您正在寻找的行和:

 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()对每一列求和。

于 2011-12-19T12:24:08.010 回答