我正在发现R,虽然我看到它有多么强大,但我也有点失落。 在那种情况下,我有一个季度系列,称为通货膨胀。 我的目标是计算每个季度数据点的同比增长率。 所以基本上,从1981年第一季度开始,我想做(1982年第一季度通货膨胀 - 1981年第一季度通货膨胀)/ 1981年第一季度通货膨胀第一点,依此类推......
当我做差异(通货膨胀,滞后= 4)时,我得到了第一部分,即(通货膨胀Q1 1982 - 通货膨胀1981年第一季)。 但是,如何告诉R将1981年第一季度的通货膨胀除以第一点,然后是1981年第二季度的通货膨胀......
来自其他语言,我的第一种方法是循环,但我相信R可以更快,更有效地做到这一点。
谢谢!
答案 0 :(得分:4)
在这里,你有
> 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