计算R中变量的增长

时间:2017-11-17 10:42:25

标签: r rate

我想用R。

计算数据框中的增长变量

假设我有一个起始变量X=100 时间长度为10的向量Y,增长率为f.e

Y<-c(0.04, 0.03, -0.02 ... 0.02)

是否有计算X o.v.t.的增长率的解决方案,以便获得我的起始值X的向量,例如:(100,100 *(1 + 0,04),(100 *(1 + 0,04)*(1,03),......等)

我希望我能说清楚。

谢谢,

3 个答案:

答案 0 :(得分:0)

上述评论中来自@AEF的简单回答。 只需使用purrr包和函数accumulate发布另一个解决方案。对于您的具体示例可能有点过多,但如果您想应用更复杂的函数/模式/方法,则非常有用:

library(purrr)

# set of growth rates
gr_rates = c(0.04, 0.03, -0.02, 0.02)

# function to apply the general formula
f = function(x,r) {x*(1+r)}

# apply the function recursively and show intermediate results
# set the starting point as 100
accumulate(gr_rates, f, .init = 100)

# [1] 100.0000 104.0000 107.1200 104.9776 107.0772

答案 1 :(得分:0)

我认为你正在寻找的是cumprod功能。这类似于计算金融中的财富指数。请尝试以下方法:

library(tidyverse)
df <- data.frame( changes = c(0.04, 0.03, -0.02, 0.02) ) %>% tbl_df()

# Now calculate your growth rates, or wealth indexes, as follows:

start_value <- 100

df_growth_rate <- df %>% mutate( growth_rate = start_value * cumprod(1 + changes))

答案 2 :(得分:0)

我遇到了一个问题,计算会计类的输入值的增长。我写了以下函数。它以初始值作为输入(x,输入该值需要增加的时间段(n)以及增长率(g)。您可以将该函数增长率合理地应用于您的值x = 100

growth_fct <- function(x, n, g){

  xrep <- rep(x, (n-1))
  for(i in seq_along(xrep)){
    xrep[i] <- xrep[i] * (1 + g)^i
  }
  x <- c(x, xrep)
  return(x)
}