Вопрос

Trying to make a more simple unique identifier from already existing identifier. Starting with just and ID column I want to make a new, more simple, id column so the final data looks like what follows. There are 1million + id's, so it isnt an option to do if thens, maybe a do statement?

ID NEWid

1234 1

3456 2

1234 1

6789 3

1234 1

Это было полезно?

Решение

A trivial data step solution not using monotonic().

proc sort data=have;
by id;
run;

data want;
set have;
by id;
if first.id then newid+1;
run;

Другие советы

using proc sql.. (you can probably do this without the intermediate datasets using subqueries, but sometimes monotonic doesn't act the way you'd think in a subquery)

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;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top