Я хочу рассчитать окончательное количество необработанных претензий после каждого месяца.Сначала я вычисляю total
количество заявок на обработку: это backlog
+ любое new_claims
за последний месяц, поступающее в текущем месяце.Затем, чтобы вычислить число close_claims
, я умножаю это число на closed_total_ratio
и убираю его из total
.Моя последняя переменная - open_claims
, которая должна автоматически вводиться в backlog
, как только она будет рассчитана:
library(tidyverse)
set.seed(1)
df <- tibble(date = seq(from = lubridate::as_date('2018-01-01'), to = lubridate::as_date('2018-06-01'), by = 'months'),
backlog = c(120, rep(NA, 5)),
new_claims =sample(c(10,20,30), 6, replace = T),
closed_open_ratio = rep(0.2, 6),
open_claims = rep(NA, 6))
df
set.seed(1)
solution <- tibble(date = seq(from = lubridate::as_date('2018-01-01'), to = lubridate::as_date('2018-06-01'), by = 'months'),
backlog = c(120, 104, 99, 95, 100, 88),
new_claims =sample(c(10,20,30), 6, replace = T),
total = c(130, 124, 119, 125, 110, 118),
closed_total_ratio = rep(0.2, 6),
closed = c(26, 25, 24, 25,22,24),
open_claims = c(104, 99, 95, 100,88, 94)
)
solution
Дело в том, что если я применю что-то вроде этого:
df %>%
mutate(total = backlog[1] +cumsum(new_claims),
closed = closed_open_ratio* total,
open_claims = total - cumsum(closed)) %>%
select(backlog, new_claims, total, closed_open_ratio, closed, open_claims)
Я не могу переместиться open_claims
обратно на backlog
.Что было бы лучшим способом сделать это?