Заполните пустые значения переменной предыдущим непустым значением 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.

Я пытался поместить строку в переменную с помощьюВЫЗОВ СИМПУТ"а также с"СОХРАНИТЬ"но это тоже не сработало.

Должен быть простой и элегантный способ сделать это. Любая идея?

Ответы на вопрос(1)

Ваш ответ на вопрос