gpt4 book ai didi

sas - 设置截止期 SAS

转载 作者:行者123 更新时间:2023-12-04 20:01:54 26 4
gpt4 key购买 nike

我在使用如下所示的数据集时遇到问题。它是不同位置/周的库存计数:

data have;
input itm location $ week inv;
cards;
3 x 1 30
3 x 2 20
3 x 3 0
3 x 4 5
3 y 1 100
3 y 2 90
3 y 3 0
3 y 4 6
4 x 1 30
4 x 2 0
4 x 3 40
4 x 4 10
;
run;

这就是问题所在...一旦特定位置/项目组合的库存达到 0,我希望该组合的所有剩余周数都归为 0。我想要的输出如下所示:

data want;
input itm location $ week inv;
cards;
3 x 1 30
3 x 2 20
3 x 3 0
3 x 4 0
3 y 1 100
3 y 2 90
3 y 3 0
3 y 4 0
4 x 1 30
4 x 2 0
4 x 3 0
4 x 4 0
;
run;

我是 SAS 的新手,不知道如何操作。帮忙?!

谢谢!

最佳答案

您可以按照以下步骤进行操作:

  • by语句表示顺序(输入数据集必须相应排序)
  • retain 语句将控制变量的值(reset)传递给后续行
  • 停用每个第一个位置/项目组合的插补(reset=0)
  • 为 inv 的零值激活插补 (reset=1)
  • 如果插补有效则设置为 0

代码:

data want (drop=reset);
set have;
by itm location week;
retain reset;
if first.location then reset=0;
if (inv = 0) then reset=1;
else if (reset = 1) then inv=0;
run;

reset 的值在行与行之间保持不变,直到被显式修改。

by 语句中存在变量week 只是为了检查输入数据是否按时间顺序排序。

关于sas - 设置截止期 SAS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30052945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com