用于动态确定的级别的SAS insert列
我正在尝试将SAS设置为可以在Excel中轻松完成的操作,但无法找到有效的方法。考虑到这里显示的前两个表(分别称为TREE和LEVEL),我试图以第三个表(FINAL_TREE)结束 将Level列添加到TREE中,使其成为FINAL_TREE的工作方式如下:对于给定的级别,任何给定的树都必须有一个大于或等于Apple_Req的数字Apple,以及大于或等于Orange_Req的橙色。因此,一棵树被赋予一个满足所有给定需求的级别 因此,在示例表中,Tree3被指定为Level1,尽管事实上,如果不是因为它的橙色计数低,它很容易成为Level3用于动态确定的级别的SAS insert列,sas,Sas,我正在尝试将SAS设置为可以在Excel中轻松完成的操作,但无法找到有效的方法。考虑到这里显示的前两个表(分别称为TREE和LEVEL),我试图以第三个表(FINAL_TREE)结束 将Level列添加到TREE中,使其成为FINAL_TREE的工作方式如下:对于给定的级别,任何给定的树都必须有一个大于或等于Apple_Req的数字Apple,以及大于或等于Orange_Req的橙色。因此,一棵树被赋予一个满足所有给定需求的级别 因此,在示例表中,Tree3被指定为Level1,尽管事实上,如果
在Excel中,这可以使用索引和查找两个匹配函数的最小值来完成,但我认为这不能直接转换为SAS。我想有一种方法可以使用明确定义的嵌套IF语句来设置它,但我希望有一种解决方案可以处理任意级别的级别表(只要需求设置正确)。事实上,在SAS中这要容易得多,部分原因是有很多不同的方法可以做到这一点 如果您熟悉SQL,最简单的方法可能是使用SQL。不过,与您在Excel中所做的最相似的是格式,也许也是最快的
proc format;
value appleF
1-<4 = '1'
5-<15 = '2'
15-high='3'
other='0';
value orangeF
5-<15 = '1'
16-<30 = '2'
30-high= '3'
other='0';
quit;
您还可以直接从数据集生成格式-例如,请参见PROC format
上的CNTLIN
选项
data want;
set have;
level = min(put(apple,applef1.),put(orange,orangef1.));
run;