On 19/06/13 23:24, R. Michael Weylandt wrote:
On Wed, Jun 19, 2013 at 12:04 PM, Yanyuan Zhu <y...@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
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.