在SAS中查找2个ID属性中的最高级别变量

时间:2013-05-28 04:28:23

标签: database sas sas-macro

我的输入数据集如下所示:

DRUG Table
DRUG_CD PARENT_DRUG_CD
DRG_1   DRG_5
DRG_2   DRG_5
DRG_3   DRG_4
DRG_4   --
DRG_5   DRG_6
DRG_6   --

我需要构建一个只包含那些没有父级的DRUGS(以及此DRUGS的所有属性)的数据集,以及一个包含最低级别DRUG_CD的额外列(CHD_DRUG_CD)。

Resulting DRUG Table
DRUG_CD CHD_DRUG_CD
DRG_6   DRG_1
DRG_6   DRG_2
DRG_6   DRG_5
DRG_4   DRG_3

1 个答案:

答案 0 :(得分:2)

亲子关系在文献中比较常见,你应该能够找到很多例子。这是一个开始的地方:

http://support.sas.com/kb/25/968.html

基本概念是您需要遍历数据集以查找每个父级的子级。您可以通过创建自己的迭代器,使用POINT =(如纸张链接)或DOW循环来执行此操作,或者您可以使用其他技术(如哈希表)执行此操作。 Hash迭代器可能是最快的解决方案,尽管理解和编码最复杂。然后,当您找到您的孩子时,您会识别您找到的孩子(例如,在数组中,如文中所述)并将循环返回到开头以找到下一个(或者,在没有找到的情况下退出)。