Заполните пустые значения переменной предыдущим непустым значением SAS 9.3
Я использую набор данных, который что-то вроде:
+----------+--------+-------+
| Variable | Level | Value |
+----------+--------+-------+
| sexe | men | 10 |
| | female | 20 |
| age | 0-20 | 5 |
| | 20-40 | 5 |
| | 40-60 | 10 |
| | >60 | 10 |
+----------+--------+-------+
И я хотел бы заполнить «пустые» ячейки, используя предыдущую непустую ячейку, чтобы получить что-то вроде этого.
+----------+--------+-------+
| Variable | Level | Value |
+----------+--------+-------+
| sexe | men | 10 |
| sexe | female | 20 |
| age | 0-20 | 5 |
| age | 20-40 | 5 |
| age | 40-60 | 10 |
| age | >60 | 10 |
+----------+--------+-------+
Я пробовал различные возможности в шаге DATA в основном сLAG () функция. Идея состояла в том, чтобы прочитать предыдущую строку, когда ячейка была пуста, и заполнить ее.
DATA test;
SET test;
IF variable = . THEN DO;
variable = LAG1(variable);
END;
RUN;
И я получил
+----------+--------+-------+
| Variable | Level | Value |
+----------+--------+-------+
| | men | 10 |
| sexe | female | 20 |
| | 0-20 | 5 |
| age | 20-40 | 5 |
| | 40-60 | 10 |
| | >60 | 10 |
+----------+--------+-------+
Проблема заключалась в том, что хорошая строка не всегда была на одну строку выше. Но я не понимаю, почему SAS ставит пробел в первой и третьей строке. Не нужно было изменять эту строку, потому что я сказал «Если переменная =.». Я знаю, как сделать это в Python или в R с некоторым циклом for, но я не нашел хорошего решения в SAS.
Я пытался поместить строку в переменную с помощьюВЫЗОВ СИМПУТ"а также с"СОХРАНИТЬ"но это тоже не сработало.
Должен быть простой и элегантный способ сделать это. Любая идея?