Sql 从类和变量混合的列扩展数据

Sql 从类和变量混合的列扩展数据,sql,sas,Sql,Sas,我在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

我在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还很陌生。当然,我的目标是尽可能在没有任何硬编码的情况下做到这一点:)


谢谢

数据步骤使用
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 |
+-------+--------+---------+

使用
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 |
+-------+--------+---------+

为什么第一个表中的值5分配给狮子,第二个表中的值分配给猫?@AlexeySigida我犯了一个愚蠢的错误,谢谢!更正了为什么第一个表中的值5分配给狮子,第二个表中的值分配给猫?@AlexeySigida我犯了一个愚蠢的错误,谢谢!更正了我不知道的关键字保留,太棒了!非常感谢你的帮助!我不知道这个关键词,太棒了!非常感谢你的帮助!