2013-12-05 4 views
1

У меня есть набор данных, как этотSAS ID прирост на 2

data ID; 
     input num; 
     datalines; 
     1 
     1 
     2 
     3 
     4 
     4 
    ; 

Я хочу, чтобы создать еще одну переменную, чтобы сгруппировать их в приросте 2:

num id 
    1  1 
    1  1 
    2  1 
    3  2 
    4  2 
    4  2 

Спасибо!

+0

Я не уверен, что следую шаблону в ожидаемом выходе ... похоже, что идентификатор группирует их в группы по 3 ... это то, что вы хотите? –

ответ

0

Если они поистине 1-2-3-4, то вы можете использовать MOD:

data want; 
set have; 
id=mod(num,2)+1; 
run; 

* или вычесть 2-мод (число, 2), если вы хотите начать с 1;

Если они не в порядке 1-2-3-4, то вы можете использовать MOD(iter) вместо mod(num) и if first.num then iter+1;, чтобы сделать итератор 1-2-3-4.

0

Вы можете использовать двоичную переменную, которая меняет свое значение от 1 до 0 или от 0 до 1 для каждого нового num;

data result; 
    set id; 
    by num; 
    retain incr 0; 
    if FIRST.num then do; 
     incr=not incr; 
     id+incr; 
    end; 
    drop incr; 
run; 
Смежные вопросы