SAS循环可变

时间:2016-12-08 14:17:07

标签: sas

尝试google它并且找不到任何东西(也许是我的完全noob)。

我想在我的数据集中创建一个名为step的新变量,从1开始计算直到customerid发生变化。

实施例: 这是我得到的表格:

Customerid  Page        step
1           Frontpage   
1           Middlepage  
2           Frontpage   
2           Middlepage  
2           Lastpage    
3           Frontpage   
3           Middlepage  

我想要的是什么:

Customerid  Page       step
1           Frontpage   1
1           Middlepage  2
2           Frontpage   1
2           Middlepage  2
2           Lastpage    3
3           Frontpage   1
3           Middlepage  2

我现在得到的是什么:

Customerid  Page    step
1   Frontpage   1
1   Middlepage  2
2   Frontpage   3
2   Middlepage  4
2   Lastpage    5
3   Frontpage   6
3   Middlepage  7

我试图在sas中这样做,但它没有用:

data nordea_dk1;
set nordea_dk;
by custerimd;
if first.customerid then do; 
step=1;
step + 1;
output;
run;

2 个答案:

答案 0 :(得分:1)

检查SAS日志中是否有注释或错误。基本逻辑适用于您的测试数据。

data have ;
 input Customerid Page $20. ;
cards;
1 Frontpage
1 Middlepage
2 Frontpage
2 Middlepage
2 Lastpage
3 Frontpage
3 Middlepage
;

data want ;
  set have ;
  by customerid ;
  if first.customerid then step=0;
  step+1;
run;

答案 1 :(得分:0)

一些语法项目,custerimd上的拼写错误,do是不必要的。此外,在这种情况下不需要output,因为它也会在数据步骤结束时输出。

就程序逻辑而言,您需要重置first.customerid上的步骤,并在其他值上增加它,因此需要其他情况。这应该是您正在寻找的:

data nordea_dk1;
    set nordea_dk;
    by customerid;

    if first.customerid then
        step=1;
    else
        step+1;

run;