【发布时间】:2020-03-14 21:22:17
【问题描述】:
我有一个关于未来增长率的大型数据集和每个人的初始值。
我想将 t=0 时的增长率与初始值 (t=0) 相乘,得到 t=1 时的值。这个 t=1 值,我想乘以 t=1 时的增长率,依此类推。
我目前使用循环执行此操作,但考虑到我在很长一段时间内有很多人,这非常慢,我觉得必须有一种更智能(更优雅)的方式来执行此操作。
我特别想使用 dplyr 函数来做到这一点。
#Create a sample df
df <- data.frame(id=rep(c("A","B"),each=5),
year=rep(1:5,2),
value = NA)
set.seed(123)
growth_rates <- data.frame(id=rep(c("A","B"),each=5),
year=rep(1:5,2),
value = runif(10,0.95,1.1))
# pick an initial value (in reality this is given)
df[df$year==1&df$id=="A","value"] <- 5
df[df$year==1&df$id=="B","value"] <- 7
for (i in 2:5){
df[df$year == i,"value"] <- df[df$year == i-1,"value"]*growth_rates[growth_rates$year == i-1,"value"]
}
感谢您的帮助!
【问题讨论】: