Распределение данных из столбца с перемешанным классом и переменной - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть набор данных в SAS в следующем формате

value   animal
---------------
NA       Felidae
5        Lion
3        Cat
NA       Canidae
1        Dog
2        Wolf

Я хотел бы преобразовать это в следующее, используя либо SAS напрямую, либо proc sql;

group    value  animal
----------------------
Felidae    5     Lion
Felidae    3     Cat
Canidae    1     Dog
Canidae    2     Wolf

Моим первым шагом было заглянуть в записи внизу списка, когда value == NA, пока мы не достигнем другого NA. Затем мы помечаем всех животных между животными, у которых было первое NA. Мне было бы знакомо делать это в python или R, но я довольно новичок в SAS и SQL. Конечно, я стремлюсь сделать это как можно более широко без каких-либо жестких кодов:)

Спасибо!

1 Ответ

0 голосов
/ 19 февраля 2020

Шаг данных с использованием оператора retain:

data want;
   set have;
   retain group;
   if value = . then group=animal;
   else output;
run;

Вывод:

+-------+--------+---------+
| value | animal |  group  |
+-------+--------+---------+
|     5 | Lion   | Felidae |
|     3 | Cat    | Felidae |
|     1 | Dog    | Canidae |
|     2 | Wolf   | Canidae |
+-------+--------+---------+
...