Найти накопленное число по приращению в процентах в R - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть датафрейм (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 голосов
/ 23 ноября 2018

Что по этому поводу:

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)
 }
}
...