我想计算一个数;需要用到lag()函数;lag()函数的次数为seq-1次;请问怎么运用函数 ;循环应该怎么写?
seq为表里的一个字段
下面是我写的code,出错;
data aa ;
set RAW_DATA_fpd30;
if INSURANCE=2 and type='PROVINCE' ;
a=0;
c=0;
if seq>1 then do ;
do i=1 TO seq-1;
a=a+lag&i(fpd60)*lag&i(active);
c=c+lag&i(fpd30)*lag&i(active);
end ;
end ;
run;
以下是数据sample:
| SEQ | MON | ACTIVE | FPD30 | SPD30 | TPD30 | FPD60 |
1 | 201409 | 73 | 0.041096 | 0 | 0.014085 | 0.013699 |
1 | 201503 | 472 | 0 | | | |
2 | 201504 | 1414 | | | | |
1 | 201410 | 1 | 0 | 0 | 0 | 0 |
2 | 201411 | 1 | 0 | 0 | 0 | 0 |
1 | 201410 | 53 | 0.037736 | 0.040816 | 0 | 0.018868 |
2 | 201411 | 856 | 0.121637 | 0.026961 | 0.04 | 0.108772 |
3 | 201412 | 1879 | 0.100053 | 0.045405 | 0.042518 | 0.087813 |
4 | 201501 | 2490 | 0.069478 | 0.029063 | 0.030482 | 0.060643 |
5 | 201502 | 2276 | 0.052724 | 0.031908 | | 0.038869 |
6 | 201503 | 3781 | 0.075149 | | | |
7 | 201504 | 8345 | | | | |
1 | 201504 | 240 | | | | |
1 | 201501 | 55 | 0.018182 | 0.075472 | | 0.018182 |
2 | 201502 | 169 | 0.023669 | 0.025316 | | 0.032258 |
3 | 201503 | 380 | 0 | | | |
4 | 201504 | 970 | | | | |