Как поместить парные значения в отсутствующие значения с помощью SAS?

Данные выглядят следующим образом:
ID Year A B 1 1279 1996 0 0 2 1279 2003 0 1 3 1447 1993 1 0 4 1447 2001 1 1 5 1487 1967 0 0 6 1487 2008 1 . 7 1487 2008 1 . 8 1487 2009 0 1 9 1678 1979 1 0 10 1678 2002 1 1 11 1690 1989 1 0 12 1690 1993 0 . 13 1690 1993 0 . 14 1690 1996 0 . 15 1690 1996 0 . 16 1690 1997 0 1

Я создал переменную B. Идентификатор с самым ранним годом имеет значение 0 для B, а идентификатор с самым последним годом имеет значение 1 для B. Однако все остальные идентификаторы получают второе созданное наблюдение, одно наблюдение имеет значение 1 для B, а другое имеет значение 0 для B.

Таким образом, вывод будет выглядеть следующим образом:
ID Year A B 1 1279 1996 0 0 2 1279 2003 0 1 3 1447 1993 1 0 4 1447 2001 1 1 5 1487 1967 0 0 6 1487 2008 1 1* 7 1487 2008 1 0* 8 1487 2009 0 1 9 1678 1979 1 0 10 1678 2002 1 1 11 1690 1989 1 0 12 1690 1993 0 1* 13 1690 1993 0 0* 14 1690 1996 0 1* 15 1690 1996 0 0* 16 1690 1997 0 1

Последовательность B должна быть 0 и 1. И мне нужно вставить 1 и 0 в пропущенные значения. Может ли кто-нибудь помочь мне здесь? Заранее спасибо.


person lqq    schedule 28.07.2014    source источник


Ответы (1)


Без вашего кода для создания вышеперечисленного мы не сможем сделать многое.

Я предполагаю, что вы используете значения для них и сортируете по идентификатору, а затем по году. Если да, то этот цикл проверен и работает:

data newdata;
    set data;
    by id year;
    if first.id then
    do;
        count=0;
        B=0;
    end;
    if not first.id and not last.id then
    do;
        count+1;
        B=mod(count,2);
    end;
    if last.id then
    B=1;
run;

Дайте мне знать, как вы поживаете.

person aframe    schedule 28.07.2014
comment
Мой код — это данные newdata; установить данные; по удостоверению личности; если First.ID, то B = 0; иначе, если Last.ID, то B = 1; бегать; Далее я застрял здесь. - person lqq; 28.07.2014
comment
Я отредактировал свой ответ. Просто убедитесь, что вы сначала отсортировали данные по идентификатору года. - person aframe; 28.07.2014
comment
Это именно то, что мне нужно сделать. Большое спасибо!! Я очень ценю это. - person lqq; 28.07.2014