DATA WORK.TEST;
INPUT CUST_ID MONTH NUM @@;
CARDS;
1 1 2
1 2 0
1 3 1
1 4 0
1 5 0
1 6 0
1 7 3
1 8 2
1 9 0
2 1 0
2 2 0
2 3 1
2 4 2
2 5 0
2 6 0
2 7 0
2 8 0
2 9 3
;
DATA WORK.TEST1;
SET WORK.TEST;
/*确定分组变量,NOTSORTED分组不排序,否则必须先排序*/
BY CUST_ID NUM NOTSORTED;
/*如果是该组的第一个值,标识为1,否则累计个数*/
IF FIRST.NUM = 1 THEN DIFF = 1;
ELSE DIFF+1;
run;
其中,分组变量为CUST_ID和NUM,first.num表示在num分组中,如果是第一个则该值为1,否则为0。这里我们的目的是求num中连续为0的最大个数, 结合此处生成的diff变量,设定num=0,用max函数即可求得结果。



雷达卡




京公网安备 11010802022788号







