我想用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),......等)
我希望我能说清楚。
谢谢,
答案 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)
}