Я пытаюсь выполнить mimi c процесс, который в настоящее время выполняется вручную в Excel с использованием R, чтобы упростить процесс, поэтому его не нужно выполнять вручную. Вот пример некоторых образцов данных, с которыми я работаю (имейте в виду, что это фрагмент гораздо большего набора данных).
qty_available<- c(13500, 8500, 4600)
supply_qty<- c(0, 1000, 0)
forecast<- c(1200, 400, 3000)
demand_q<- c( 100, 800, 6000)
df<- data.frame(qty_available, supply_qty, forecast, demand_q)
Я пытаюсь выполнить следующие манипуляции (pseduo- code):
qty_available = previous(qty_available) + supply_qty - forecast - demand_q
Я могу проигнорировать первое наблюдение, потому что оно не имеет отношения к моей задаче.
Таким образом, во втором наблюдении у нас будет 13,500 + 1000 - 400 - 800
, дающее нам 13,300
. Третьим наблюдением будет 13,300 + 0 - 3000 - 6000
, дающее нам 4300
.
Если бы мне пришлось открыть этот набор данных в Excel (прочитать его в CSV), процесс прост. Я бы использовал эту формулу в ячейке A3 = A2+B3-C3-D3
. Затем просто перетащите его вниз по оставшейся части столбца.
Как бы я мог использовать c это в R?
Я попытался сделать это с помощью следующей команды
df<- mutate(df, qty_available = lag(qty_available) + supply_qty - forecast - demand_q)
Эта команда не работает, так как она использует исходное значение 8500, а не вновь рассчитанное 13,300 в доступном запаздывающем количестве, и я изо всех сил пытаюсь найти другой способ сделать это. Приветствуются любые предложения!
Желаемый результат выглядит следующим образом:
qty_available<- c(13500, 13300, 4300)
desired_output<- data.frame(qty_available, supply_qty, forecast, demand_q)