Sql 从类和变量混合的列扩展数据
我在SAS中有以下格式的数据集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
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我犯了一个愚蠢的错误,谢谢!更正了我不知道的关键字保留,太棒了!非常感谢你的帮助!我不知道这个关键词,太棒了!非常感谢你的帮助!