在平时变量衍生的工作中,我们可能会遇到需要求变量中连续为某个值的个数,比如求连续为0的个数,这里我们利用sas的first.var函数实现,代码如下:
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函数即可求得结果。