У меня большой набор данных о будущих темпах роста и начальное значение для каждого человека.
Я хочу умножить скорость роста при t = 0 на начальное значение (t = 0), чтобы получить значение при t = 1. Это значение t = 1, я хочу умножить на скорость роста при t = 1 и так далее.
В настоящее время я делаю это с al oop, но, учитывая, что у меня много людей в течение длительного периода времени, это очень медленно, и я чувствую, что должен быть более умный (и более элегантный) способ делая это.
Я бы хотел сделать это, используя функции 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"]
}
Спасибо за помощь!