【问题标题】:How to calculate CAGR using R?如何使用 R 计算 CAGR?
【发布时间】: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)))

但我希望它看起来像这样:

感谢您的帮助。

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    你可以这样写自己的CAGR函数

    CAGR <- function(x) {
      if (length(x) < 1L)
        return(numeric())
      out <- (x / x[[1L]]) ^ (1 / (seq_along(x) - 1)) - 1
      out[[1L]] <- NA_real_
      out
    }
    

    测试

    > CAGR(df$Total)
    [1]          NA  0.04453582  0.03565420  0.04395396  0.05781696 -0.12708232
    

    【讨论】:

      猜你喜欢
      • 2018-08-05
      • 2017-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 2017-12-29
      • 1970-01-01
      相关资源
      最近更新 更多