尝试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;
答案 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;