我遇到的数据集问题如下所示.这是不同地点/周的库存盘点:
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;
Run Code Online (Sandbox Code Playgroud)
这是问题...一旦库存达到特定位置/项目组合的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;
Run Code Online (Sandbox Code Playgroud)
我对SAS很新,不知道怎么做.救命?!
谢谢!
您可以通过以下步骤执行此操作:
by 用于指示顺序的语句(输入数据集必须相应地排序)retain用于将控制变量(reset)的值传递给以下行的语句reset=0每个第一个位置/项目组合的imputation()reset=1)以获得inv的零值码:
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;
Run Code Online (Sandbox Code Playgroud)
在reset显式修改之前,值从行到行保持不变.
weekby语句中变量的存在只是为了检查输入数据是按时间顺序排序的.