试图从已经存在的标识符中制作一个更简单的唯一标识符。从仅 ID 列开始,我想创建一个新的、更简单的 id 列,以便最终数据如下所示。有 100 万 + id,所以如果 thens 不是一个选项,也许是一个 do 语句?
ID NEWid
1234 1
3456 2
1234 1
6789 3
1234 1
不使用单调()的简单数据步骤解决方案。
proc sort data=have;
by id;
run;
data want;
set have;
by id;
if first.id then newid+1;
run;
使用 proc sql .. (您可能可以在没有使用子查询的中间数据集的情况下执行此操作,但有时单调不会像您在子查询中所想的那样行事)
proc sql noprint;
create table uniq_id as
select distinct id
from original
order by id
;
create table uniq_id2 as
select id, monotonic() as newid
from uniq_id
;
create table final as
select a.id, b.newid
from original_set a, uniq_id2 b
where a.id = b.id
;
quit;