2013-11-14 48 views
4

我在發現R,儘管我看到它有多強大,但我也有點迷失。 在這種情況下,我有一個季度時間系列,稱爲通貨膨脹。 我的目標是計算每個季度數據點的同比增長率。 因此,基本上,因爲它開始於1981年第一季度,我想要做的事情(通貨膨脹Q1 1982 - 通貨膨脹Q1 1981)/通貨膨脹Q1 1981第一點,等等等等......計算季度時間序列的同比增長率

當我做差異(通貨膨脹,滯後= 4)我得到第一部分,即(通貨膨脹Q1 1982 - 1981年通貨膨脹)。 但是,我如何告訴R除以1981年通貨膨脹第一點的通貨膨脹,然後通過膨脹Q2 1981年...

來自其他語言,我的第一種方法將是一個循環,但我相信R可以做更快,更高效。

謝謝!

回答

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 
+0

大謝謝!回顧過去看起來很簡單!比循環更有效率! – user2952666

+0

如果這真的能回答你的問題,你可以接受答案 –

+0

是的,我該怎麼做? – user2952666