首页 > 解决方案 > 从小数据集中的增量计算创建数组

问题描述

对于包含 7 个项目的特定小数据集,我创建了以下新数组:

f.rhs <- c((-orig_qty + looped_data$TOTAL_EFFECT[1])/looped_data$MULTIPLE_ORDER_QTY[1],
             (-orig_qty + looped_data$TOTAL_EFFECT[1] + looped_data$TOTAL_EFFECT[2])/looped_data$MULTIPLE_ORDER_QTY[1],
             (-orig_qty + looped_data$TOTAL_EFFECT[1] + looped_data$TOTAL_EFFECT[2] + looped_data$TOTAL_EFFECT[3])/looped_data$MULTIPLE_ORDER_QTY[1],
             (-orig_qty + looped_data$TOTAL_EFFECT[1] + looped_data$TOTAL_EFFECT[2] + looped_data$TOTAL_EFFECT[3]+ looped_data$TOTAL_EFFECT[4])/looped_data$MULTIPLE_ORDER_QTY[1],
             (-orig_qty + looped_data$TOTAL_EFFECT[1] + looped_data$TOTAL_EFFECT[2] + looped_data$TOTAL_EFFECT[3]+ looped_data$TOTAL_EFFECT[4] + looped_data$TOTAL_EFFECT[5])/looped_data$MULTIPLE_ORDER_QTY[1],
             (-orig_qty + looped_data$TOTAL_EFFECT[1] + looped_data$TOTAL_EFFECT[2] + looped_data$TOTAL_EFFECT[3]+ looped_data$TOTAL_EFFECT[4] + looped_data$TOTAL_EFFECT[5] +looped_data$TOTAL_EFFECT[6])/looped_data$MULTIPLE_ORDER_QTY[1],
             (-orig_qty + looped_data$TOTAL_EFFECT[1] + looped_data$TOTAL_EFFECT[2] + looped_data$TOTAL_EFFECT[3]+ looped_data$TOTAL_EFFECT[4] + looped_data$TOTAL_EFFECT[5] +looped_data$TOTAL_EFFECT[6] + looped_data$TOTAL_EFFECT[7])/looped_data$MULTIPLE_ORDER_QTY[1])

如您所见,这段代码非常难看。基本上发生的事情是在每个新值上,我们正在获取以前的值并从下一行数据中添加一些新的东西(本质上是增量计算)。

我将如何进行相同的过程并为包含任意数量观察的数据集制作这一行?

标签: r

解决方案


使用cumsum()会帮助你。可能是这样的:

f.rhs = (-orig_qty + cumsum(looped_data$TOTAL_EFFECT)) / looped_data$MULTIPLE_ORDER_QTY[1]

推荐阅读