我想检查运算符(operator)(OP_NAME
)是否被SN更改。如果运算符(operator)发生变化,则将所有相应的 SN
、OP_NAME
、Value
输出为 Table1:OP_CHANGE
else 表2:OP_UNQ
.
条件:如果任何 1 个运算符随 SN
发生变化,则将整行输出到表中
SN OP_Name Value
109029 SPAN 150
109029 SPAN 235
109032 SPAN 550
109033 SPAN 650
109033 SPAN 700
109036 FRAN 124
109036 SECURIT 224
109036 SECURIT 560
109036 SECURIT 752
109037 AOM 44
109037 SECA 58
109037 SECURIT 85
109037 SECURIT 98
109038 FRAN 45
109038 SECURIT 47
109038 SECURIT 58
109038 SECURIT 65
109039 GOVER 33
109039 GOVER 45
109039 GOVER 48
109041 SOREL 45
109041 SOREM 55
109041 INA 45
109043 SPAN 96
109044 SPAN 53
109045 SOREM 25
109045 SOREM 65
我想查看像
这样的输出表
表1:OP_CHANGE
SN OP Name value
109036 FRAN 124
109036 SECURIT 224
109036 SECURIT 560
109036 SECURIT 752
109037 AOM 44
109037 SECA 58
109037 SECURIT 85
109037 SECURIT 98
109038 FRAN 45
109038 SECURIT 47
109038 SECURIT 58
109038 SECURIT 65
109041 SOREM 45
109041 SOREM 55
109041 INA 45
表2:OP_UNQ
SN OP Name value
109029 SPAN 150
109029 SPAN 235
109032 SPAN 550
109033 SPAN 650
109033 SPAN 700
109039 GOVER 33
109039 GOVER 45
109039 GOVER 48
109043 SPAN 96
109044 SPAN 53
109045 SOREM 25
109045 SOREM 65
最佳答案
您可以执行以下操作:
data op_change(drop=change) op_unq(drop=change);
set have(in=h1) have;
by sn;
length change $1;
retain change;
if h1 then do;
if lag(op_name) ne op_name then change = 'Y';
if first.sn then change = 'N';
end;
else do;
if change = 'Y' then output op_change;
else output op_unq;
end;
run;
关于sas - 在 SAS 中创建带有条件的子表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22911059/