【问题标题】:How to SUM multiple columns within a zoo object如何对动物园对象中的多列求和
【发布时间】:2011-12-19 12:07:34
【问题描述】:

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

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

【问题讨论】:

    标签: r aggregate zoo


    【解决方案1】:

    我希望我能正确理解你想要什么。但如果它是您正在寻找的 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(),它将对每一列求和。

    【讨论】:

    • 太棒了,非常感谢。我知道它必须简单,并表明我对 R 缺乏了解。
    • 请注意,如果您想找回动物园对象,请使用上述答案:zoo(rowSums(z.all), time(z.all))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多