[R] how to get growth rate of a (time series) data?

Rolf Turner rolf.turner at xtra.co.nz
Thu Jun 20 00:16:24 CEST 2013


On 19/06/13 23:24, R. Michael Weylandt wrote:
> On Wed, Jun 19, 2013 at 12:04 PM, Yanyuan Zhu <yyz at tongji.edu.cn> wrote:
>> Hello all, now I'm trying to switch from Excel to R to deal with the data,
>> and as a newbie i got the problem as follows.
>>
>> suppose I have a data named "test"
>> test<- data.frame(year=c(1996:2011),
>> Y=c(74163.6,81658.5,86531.6,91125.0,98749.0,109028.0,120475.6,136613.4,160956.6,187423.5,222712.5,266599.2,315974.6,348775.1,402816.5,465731.3))
>> in which Y means the GDP of a country
>>
>> If i want to get Delta Y = Y(t)-Y(t-1) , i could use diff() in R
>> diff(test$Y)
>>
>> but what if i want to get gY=(Y(t)-Y(t-1))/Y(t-1)?
>> seems diff(test$Y)/(test$Y)[-1] doesnt work ...
> Odd, I would have thought it did.
     <SNIP>

No, "clearly" ( :-) ) it doesn't.  It gives

(Y[2] - Y[1])/Y[2], (Y[3]-Y[2])/Y[3], .... when what is wanted is

(Y[2] - Y[1])/Y[1], (Y[3]-Y[2])/Y[2], ....

The OP needs to do:

     with(test,diff(Y)/Y[-length(Y)])

This is yet another illustration of the rule that if there is a 50-50 
chance of
getting things the wrong way around, then there is actually a probability
of one of getting things the wrong way around.

     cheers,

         Rolf



More information about the R-help mailing list