尝试从现有标识符中创建更简单的唯一标识符。从just和ID列开始,我想创建一个新的,更简单的id列,以便最终数据如下所示。有1百万+ id的,所以如果thens,也许是do语句,它不是一个选择吗?
ID NEWid
1234 1
3456 2
1234 1
6789 3
1234 1
答案 0 :(得分:3)
一个简单的数据步骤解决方案,不使用monotonic()。
proc sort data=have;
by id;
run;
data want;
set have;
by id;
if first.id then newid+1;
run;
答案 1 :(得分:2)
使用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;