2016-05-09 4 views
-1

Я хочу создать переменную Var2, равную 1, начиная с первого наблюдения Var1 равно 1, а Var2 равно 1 до тех пор, пока не будет определен конец определенной группы по идентификатору. Вот минимальный рабочий пример:Сохранять значение переменной в группе в SAS

ID Год Var1
1 1.
1 3.
1 5.

И я хочу создать следующий вывод:

ID Год var1 var2
1 1. ,
1 3. 0
1 5. 1

Мой текущий код выглядит следующим образом:

DATA data1; 
SET data0; 
BY ID YEAR ; 
IF LAST.ID THEN END = _N_; 
IF Var1 > 0 THEN CNT=_N_; 
RUN; 
DATA data2; 
SET data1; 
BY ID YEAR ; 
Var2 = 0; 
IF Var1 = 1 THEN DO; 
    DO I = CNT TO END; 
     Var[I] = 1; 
    END; 
END; 
RUN; 

Однако SAS не цикл по наблюдениям.

ответ

2

Я не уверен, что ваш пример делает, но это довольно просто.

data want; 
    set have; 
    by id; 
    retain var2; 
    if first.id then var2=0; 
    if var1=1 then var2=1; 
run; 

Сохранить var2 сохранить свое значение по наблюдениям, а затем установить его в 1, когда вы видите 1 в var1; наконец, установите значение 0, когда вы увидите строку first.id.

Смежные вопросы