2

试图从已经存在的标识符中制作一个更简单的唯一标识符。从仅 ID 列开始,我想创建一个新的、更简单的 id 列,以便最终数据如下所示。有 100 万 + id,所以如果 thens 不是一个选项,也许是一个 do 语句?

ID NEWid

1234 1

3456 2

1234 1

6789 3

1234 1

4

2 回答 2

3

不使用单调()的简单数据步骤解决方案。

proc sort data=have;
by id;
run;

data want;
set have;
by id;
if first.id then newid+1;
run;
于 2013-08-12T15:12:57.887 回答
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;
于 2013-08-12T15:00:45.623 回答