simeon duckworth
2009-Feb-22 18:52 UTC
[R] calculating compound growth rates - creating a flexible function
R-listers
I am still finding my way with R - and feel that I am making a complete dogs
dinner of something that should be pretty simple.
What I'd like to do is to create a simple function that i can use to
calculate compound growth rates (CAGRs) over a data frame. I'd like the
function to be flexible enough to vary the time period and to run over
'panel data'.
The issue is that I can get a function to work over one variable, but cant
figure out how to generalise it, specifically
... how do i get the original variable to be quoted in the output, not the
constructed variable in the function
... what is the most efficient way to loop over variables in the data set &
to output a labelled dataframe (potentially looping by variable, by time
period, or by region/country (more generally ... perhaps with plyr))
# example
require(ggplot2)
require(zoo)
require(xts)
data(economics)
test<-zoo(economics[,-1],economics$date)
cagr <- function(z,period) {
z.sub <- last(xts(z),period)
g <- lm(log(z.sub)~1+I(1:length(z.sub)))
cagr <- (1+g$coeff[2])^(frequency(z.sub))-1
print(cagr)
}
cagr(test$pce,"5 years")
grateful for any help
simeon
[[alternative HTML version deleted]]
