Обратное cumum с разрывами с непоследовательными числами - PullRequest
0 голосов
/ 04 марта 2019

Глядя, чтобы заполнить матрицу с обратной суммой.Есть несколько разрывов, которые необходимо поддерживать.

Я предоставил образец матрицы для того, чего я хочу достичь.Первый столбец - это данные, второй - то, что я хочу.Вы увидите, что столбец 2 обновлен, чтобы отразить количество оставшихся элементов.Когда есть 0, предыдущий номер должен быть перенесен.

update <- matrix(c(rep(0,4),rep(1,2),2,rep(0,2),1,3, 
  rep(10,4), 9,8,6, rep(6,2), 5, 2),ncol=2)

Я пробовал несколько способов создать последовательность, цикл с использованием многочисленных пакетов (например, зоопарк).Что трудно, так это то, что числа в столбце 1 могут быть между 0,1, .., X, но меньше, чем в столбце 2.

Любая помощь или советы будут приветствоваться

РЕДАКТИРОВАТЬ: столбец 2начинается с заданного значения, которое может представлять собой любое начальное значение (т. е. запас в начале месяца).Столбец 1 будет представлять «совершенные покупки», которые;таким образом, столбец 2 должен отражать общее количество доступных предметов.

1 Ответ

0 голосов
/ 04 марта 2019

Следующее будет сообщать о балансе покупки и запасов, как описано:

starting_inventory <- 100
df <- data.frame(purchases=c(rep(0,4),rep(1,2),2,rep(0,2),1,3))
df$cum_purchases <- cumsum(df$purchases)
df$remaining_inventory <- starting_inventory - df$cum_purchases

Результат:

   purchases cum_purchases remaining_inventory
1          0             0                 100
2          0             0                 100
3          0             0                 100
4          0             0                 100
5          1             1                  99
6          1             2                  98
7          2             4                  96
8          0             4                  96
9          0             4                  96
10         1             5                  95
11         3             8                  92
...