r - 计算季度时间序列的同比增长率

标签 r time-series

我正在发现 R,虽然我看到它有多么强大,但我也有点迷茫。
在这种情况下,我有一个季度时间序列,称为通货膨胀。
我的目标是计算每个季度数据点的同比增长率。
所以基本上,当它从 1981 年第一季度开始时,我想做 (1982 年第一季度通货膨胀 - 1981 年第一季度通货膨胀)/1981 年第一季度通货膨胀,以此类推......

当我做 diff(Inflation,lag=4) 时,我得到了第一部分,即(1982 年第一季度通货膨胀 - 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

关于r - 计算季度时间序列的同比增长率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19976237/

相关文章:

r - 如何在其他脚本中包含(源)R 脚本

r - AE数据: impute missing end day and then insert rows from start day to end day

mysql - 从 Shiny 的 renderUI 中获取

python - 找到 Pandas 时间序列之间的相关性

python - Pandas:使用 groupby 重新采样时间序列

matlab - 关于如何解决稀疏 OLS - 如何在 Matlab 中应用 `l1` 最小化(教育目的)

R:如何聚合 NA 值

r - 如何更快地迭代和测试 R 中数据帧的列?

r - 使用 R 中的 xts 获取每周的第一天和最后一天

azure - 为了从 Azure AutoML 时间序列预测中获得此结果,我可能做错了什么?