【问题标题】:Averaging time series in aggregate in apply.daily() in R在 R 中的 apply.daily() 中平均时间序列
【发布时间】:2016-04-28 03:01:11
【问题描述】:

我有几个合并的每日动物园时间序列(假设合并集的名称是“测试”),它们以以下格式显示:

>test 


              TS1     TS2     TS3
2014-07-30    2.0     3.0     4.0
2014-07-31    2.5     3.0     4.5
2014-08-01    3.0     3.0     5.0

我想以多种方式聚合/操作时间序列。然而,最简单的平均或求和是逃避我。我尝试了以下方法:

ts <- apply.daily(as.xts(test),mean)

我原以为会给我以下输出:

>ts

                  X    
    2014-07-30    3.0     
    2014-07-31    3.3     
    2014-08-01    3.7    

但是,它返回与以前相同的时间序列。我知道这对我计划使用的apply.weekly()apply.monthly() 很有用,但是我如何调整所有这些函数以在相同的基础上将 TS1、TS2 和 TS3 包装成总体平均值,同时维护 zoo/xts 格式。

非常感谢

【问题讨论】:

    标签: r xts zoo


    【解决方案1】:

    根据显示的示例,我们可以连接行并获取mean

    apply.daily(as.xts(test), function(x) round(mean(c(x)),1))
    #          [,1]
    #2014-07-30  3.0
    #2014-07-31  3.3
    #2014-08-01  3.7
    

    请注意,在每日数据集上使用 OP 的代码会返回输入数据,因为标准只有一个观察值。假设如果数据集是 datetime 类,那么使用 apply.daily 将返回每一天的 mean,用另一个 mean 包裹它以获得每一行的 mean,即

    test1 <- structure(list(TS1 = c(2, 2.5, 3, 2.2), TS2 = c(3, 3, 3, 3.2), 
    TS3 = c(4, 4.5, 5, 4.4)), .Names = c("TS1", "TS2", "TS3"), 
     class = "data.frame", row.names = c("2014-07-30 07:00:00", 
    "2014-07-31 05:00:00", "2014-08-01 03:00:00", "2014-07-30 07:20:00"))
    
    apply.daily(as.xts(test1), function(x) round(mean(mean(x)),1))
    #                   [,1]
    #2014-07-30 07:20:00  3.1
    #2014-07-31 05:00:00  3.3
    #2014-08-01 03:00:00  3.7
    

    由于我们使用的是匿名函数,所以我们不需要两个mean

     apply.daily(as.xts(test1), function(x) round(mean(x),1))
     #                     [,1]
     #2014-07-30 07:20:00  3.1
     #2014-07-31 05:00:00  3.3
     #2014-08-01 03:00:00  3.7
    

    用OP的方法检查上述结果

    apply.daily(as.xts(test1), mean)
    #                   TS1 TS2 TS3
    #2014-07-30 07:20:00 2.1 3.1 4.2
    #2014-07-31 05:00:00 2.5 3.0 4.5
    #2014-08-01 03:00:00 3.0 3.0 5.0
    
    round(mean(c(2.1, 3.1, 4.2)), 1)
    #[1] 3.1
    round(mean(c(2.5, 3.0, 4.5)), 1)
    #[1] 3.3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-01
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多