【发布时间】:2022-01-12 12:43:15
【问题描述】:
我有以下数据
df <- structure(list(fin_year = c(2016, 2017, 2018, 2019, 2020, 2021
), Total = c(136661.9, 142748.25, 146580.77, 155486.07, 171115.58,
69265.01)), class = "data.frame", row.names = c(NA, -6L))
我想计算增加时间步长的复合年增长率 (CAGR)。例如,第 2 年 (Y2) 的 CAGR 将通过比较第 1 年和第 2 年之间的增长率来计算,第 3 年 (Y3) 的 CAGR 将通过比较 Y1 和第 3 年之间的增长率、第 3 年的 CAGR 来计算4 (Y3) 将通过比较 Y1 和第 4 年之间的增长率来计算,依此类推。
我可以按如下方式计算 CAGR,但这实际上只是提供了同比增长。
YearOverYear<-function (x,periodsPerYear){
if(NROW(x)<=periodsPerYear){
stop("too few rows")
}
else{
indexes<-1:(NROW(x)-periodsPerYear)
return(c(rep(NA,periodsPerYear),(x[indexes+periodsPerYear]-x[indexes])/x[indexes]))
}
}
df1 <- df %>%
cbind(YoY=(round((YearOverYear(test1$Total,1)*100),digits=2)))
但我希望它看起来像这样:
感谢您的帮助。
【问题讨论】: