使用非序列号中断反转cumsum

问题描述 投票:0回答:1

希望用反向的cumsum填充矩阵。必须保留多个休息时间。

我已经为我想要完成的事情提供了一个示例矩阵。第一列是数据,第二列是我想要的。您将看到第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栏应反映可用剩余物品的总数。

r seq cumsum
1个回答
0
投票

以下将报告所述的采购和库存余额:

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
© www.soinside.com 2019 - 2024. All rights reserved.