我发现了R,尽管我知道它有多强大,但我也有点迷失。
在这种情况下,我有一个季度时间序列,称为通货膨胀。
我的目标是计算每个季度数据点的同比增长率。
所以基本上,从1981年第一季度开始,我想做第一点(Inflation Q1 1982-Inflation Q1 1981)/ Inflation Q1 1981作为第一点,依此类推...

当我做diff(Inflation,lag = 4)时,我得到了第一部分,那就是(Inflation Q1 1982-Inflation Q1 1981)。
但是我如何告诉R将其除以1981年第一季度的通货膨胀率的第一个点,然后再除以1981年第二季度的通货膨胀...

来自其他语言,我的第一种方法是循环,但是我确信R可以更快,更高效地完成该任务。

谢谢!

最佳答案

这边有

> series <- ts(1:12, frequency = 4, start = c(1981, 1)) # example of quarterly serie
> series # this is how `series` looks like
     Qtr1 Qtr2 Qtr3 Qtr4
1981    1    2    3    4
1982    5    6    7    8
1983    9   10   11   12
> diff(series, lag=4)/ lag(series, k=-4) # the result you want
          Qtr1      Qtr2      Qtr3      Qtr4
1982 4.0000000 2.0000000 1.3333333 1.0000000
1983 0.8000000 0.6666667 0.5714286 0.5000000


作为另一种选择,您可以使用:

> (series/lag(series, k=-4))-1

10-08 02:22