根据现有的id变量创建唯一的id变量

时间:2013-08-12 14:41:31

标签: sas proc-sql

尝试从现有标识符中创建更简单的唯一标识符。从just和ID列开始,我想创建一个新的,更简单的id列,以便最终数据如下所示。有1百万+ id的,所以如果thens,也许是do语句,它不是一个选择吗?

ID NEWid

1234 1

3456 2

1234 1

6789 3

1234 1

2 个答案:

答案 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;