我在R工作,想从增长率中"恢复"一个系列:我有一个数据帧,有两列,日期和增长率。
date growth_rate
1946-10-01 NA
1947-01-01 3.5
1947-04-01 2.1
1947-07-01 1.6
增长率的计算方法如下:
growth_rate_t=400*(ln(x_t(-ln(x_{t-1}(
我想添加一个系列为x的列,从100开始。基本上:
date growth_rate x
1946-10-01 NA 100
1947-01-01 3.5. 100.88
1947-04-01 2.1 101.41
1947-07-01 1.6 101.82
如何在不使用循环的情况下完成此操作?
如果没有循环,我不知道该怎么做。
您可以这样做:
library(dplyr)
library(purrr)
df %>%
mutate(x = accumulate(2:nrow(df),
~ exp((growth_rate[.y] + (400 * log(.x))) / 400), .init = 100))
date growth_rate x
1 1946-10-01 NA 100.0000
2 1947-01-01 3.5 100.8788
3 1947-04-01 2.1 101.4098
4 1947-07-01 1.6 101.8163