【问题标题】:trying to subtract a vector from a time series in the correct order试图以正确的顺序从时间序列中减去一个向量
【发布时间】:2017-02-23 18:09:24
【问题描述】:

我有一个从 1951 年到 2012 年的时间序列。部分如下

       Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   Dec
1951                                     15.50 18.74 22.75 25.90 25.43 27.61
1952 27.60 27.72 27.63 24.38 20.34 17.74 17.90 20.57 23.13 25.60 26.41 26.98
1953 25.80 26.19 24.99 23.23 19.59 15.78 14.85 18.97 20.44 25.78 26.65 27.00
1954 26.25 26.97 25.33 23.16 20.47 15.47 15.64 18.33 22.71 26.71 25.77 25.94

我还得到了下面所有 Jans、Feb 等的均值向量

 [1] 27.80410 27.24500 26.14211 23.76737 20.19474 16.87368 16.71846 19.28359 22.74385
[10] 25.22513 26.50128 27.21410

我需要从所有一月中减去一月的平均值,二月也是如此 等等

但如果我做一个简单的减法,我会得到一月从七月等中减去

时间序列是时间序列,均值是向量。

你能告诉我如何克服这个问题吗?整个过程是循环的一部分。

【问题讨论】:

    标签: r


    【解决方案1】:

    我们需要使用cycle函数来索引时间序列

    ts1-v1[cycle(ts1)]
    #       Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   Dec
    #1951                                     -1.21 -0.54  0.01  0.67 -1.07  0.41
    #1952 -0.20  0.48  1.49  0.62  0.15  0.87  1.19  1.29  0.39  0.37 -0.09 -0.22
    #1953 -2.00 -1.05 -1.15 -0.53 -0.60 -1.09 -1.86 -0.31 -2.30  0.55  0.15 -0.20
    #1954 -1.55 -0.27 -0.81 -0.60  0.28 -1.40 -1.07 -0.95 -0.03  1.48 -0.73 -1.26
    

    数据

    ts1 <- structure(c(15.5, 18.74, 22.75, 25.9, 25.43, 27.61, 27.6, 27.72, 
    27.63, 24.38, 20.34, 17.74, 17.9, 20.57, 23.13, 25.6, 26.41, 
    26.98, 25.8, 26.19, 24.99, 23.23, 19.59, 15.78, 14.85, 18.97, 
    20.44, 25.78, 26.65, 27, 26.25, 26.97, 25.33, 23.16, 20.47, 15.47, 
    15.64, 18.33, 22.71, 26.71, 25.77, 25.94), .Tsp = c(1951.5, 1954.91666666667, 
     12), class = "ts")
    
    
    v1 <- c(27.80, 27.24, 26.14, 23.76, 20.19, 16.87, 16.71, 19.28, 22.74, 25.23,
     26.5, 27.2) 
    

    【讨论】:

    • 谢谢天丝白
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    相关资源
    最近更新 更多