我想通过SN和Name将虚拟变量分配为OP。如果SN和Name则OP = 1,如果SN和Name<>到以前的名字,然后OP = 2,如果它重复然后OP = 2,相同的条件如下,请参阅下面的例子
SN NAME OP
109034 SPANISH 1
109036 FRANCE 1
109036 SECURITE 2
109036 SECURITE 2
109036 SECURITE 2
109037 AOMlk 1
109037 SECPPAA 2
109037 CIVILE 3
109037 CIVILE 3
109038 FRANCE 1
109038 SECURITE 2
109038 SECURITE 2
109038 SECURITE 2
109039 GOVERNME 1
109039 GOVERNME 1
109039 GOVERNME 1
109041 ITALIA 1
109041 SOREML 2
109041 SOREML 2
109041 SOREML 2
我试过这段代码,我没有得到我想要的东西
data new2( keep=SN Name OP);
set new1;
by SN Name ;
retain OP(0);
if first.SN and first.Name then OP=1;
else OP=OP+1;
run;
答案 0 :(得分:1)
您的代码无法正常工作的原因是,当名称没有更改时,它会增加OP,并在更改时将其设置为1。
您需要执行以下操作来执行您尝试执行的操作:
data want;
set have;
by sn name notsorted;
if first.sn then op = 1;
else if first.name then op + 1;
run;