通过R中的百分比增量来查找累积数

时间:2018-11-23 11:53:55

标签: r dplyr tidyverse cumulative-sum

我有一个数据框(new_df),如下所示(原始示例)

structure(list(Facility = c("ABE", "ABE", "ABE", "ABE", "ABE", 
"ABE", "ABE", "ABE", "ABE", "ABE"), Year.x = c(2017, 2018, 2019, 
2020, 2021, 2022, 2023, 2024, 2025, 2026), `Growth Rate` = c(25.375, 
15.5865736124958, 14.5677592486103, 12.3473314371758, 10.253164556962, 
6.67251975417032, 2.65906932573599, 1.55411655874191, 1.51211513936965, 
1.5853074898301), Year.y = c(2016, 2016, 2016, 2016, 2016, 2016, 
2016, 2016, 2016, 2016), OPS = c(7200, 0, 0, 0, 0, 0, 0, 0, 0, 
0)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"
))

我想在OPS中输入值,以使其显示累计乘以百分比增量(列增长率) 以下是我要做的工作要点

用于(OPSNET中的所有设施) 对于OPSNET中的每个设施,请根据每个设施每年的增长率找到2017年至2045年的新运营数量。请记住,增长率以“ GR”为单位。

假设您要对设施“ ABE”执行此操作。首先,将7200乘以2017年的增长率(25),然后将其乘以7200,得出9027。然后,将9027乘以2018的增长率(15),然后将其乘以9027,得出10434。直到2045年。

我在下面使用dplyr进行了尝试,但是我正在努力如何在服用时以百分比增量倍增

我的评价:-

new_df <- new_df %>% arrange(Facility, Year.x) %>% 
  mutate(cumsum = cumsum(OPS))

请帮助我!

1 个答案:

答案 0 :(得分:1)

那呢:

for(i in 2:nrow(a)){
 if(a$Facility[i]==a$Facility[i-1]){
   a$OPS[i] <- (a$OPS[i-1])*((a$`Growth Rate`[i-1]/100)+1)
 }
}