我有一个 R 数据框,其中包含一年的年份、增长率和总计。我想通过使用 Growth_rate 进行折扣来填充缺失值,该增长率随着几年后的增加和之前几年的减少而增加。 例如,如果年份为 2018 年,则 2019 年的值为 2018 年的值乘以 2018 年增长率,2020 年的值为 2018 年的值乘以 2018 年增长率和 2019 年的 Growth_rate 值。反之,2017 年的值,将是 2018 年的价值按 grotwh_rate 进行折扣2017 年,2016 年的值将是 2018 年的值按 2017 年的 grotwh_rate 和 2016 年的 Growth_rate 进行折扣。下面是示例数据框,所需列为 Total_Projection
# Example dataset
df <- data.frame(
year = c(2016, 2017, 2018, 2019, 2021, 2022, 2023),
growth_rate = c(0.0678912, 0.0526389, 0.099030, 0.830844, 0.830764, 0.656793, 1.253578),
total = c(NA, NA, 1141262, NA, NA, NA, NA),
total_projection = c(1139887, 1140661, 1141262, 1142392, 1151884, 1161453, 1169081)
)
df |>
mutate(coef = cumprod(1+lag(growth_rate, 1, 0)/100),
total2 = coef / coef[year == 2018] * total[year == 2018])
结果
year growth_rate total total_projection coef total2
1 2016 0.0678912 NA 1139887 1.000000 1139888
2 2017 0.0526389 NA 1140661 1.000679 1140662
3 2018 0.0990300 1141262 1141262 1.001206 1141262
4 2019 0.8308440 NA 1142392 1.002197 1142392
5 2021 0.8307640 NA 1151884 1.010524 1151884
6 2022 0.6567930 NA 1161453 1.018919 1161453
7 2023 1.2535780 NA 1169081 1.025611 1169081