如何将if语句从Datastep重写为SAS中的IML

时间:2018-10-06 10:43:24

标签: sas

我一直在尝试重写几个在数据步骤中工作的if语句,以在iml中生成一个新矩阵,但似乎不起作用:

data dd (drop = _TYPE_ _FREQ_);
set b ;
if _N_ =1 then set cc ;
if pred <= pred_max then pred_c = "p80 - max" ;
if pred <= pred_p80 then pred_c = "p60 - p80" ;
if pred <= pred_p60 then pred_c = "p40 - p60" ;
if pred <= pred_p40 then pred_c = "p20 - p40" ;
if pred <= pred_p20 then pred_c = "min - p20" ;
run ;

proc iml ;
use model1;

p={0,0.2,0.4,0.6,0.8,1};
call qntl(per ,predprob,p);
print per[rowname={"min" ,"0.2" ,"0.4" ,"0.6" ,"0.8", "max"}];




pred_c=j(nrow(predprob),1,.);
do i=1 to nrow(predprob);
do j=1 to nrow(predprob);
if predprob[i]<= per[6,] 
then pred_c[j,i]={"max-p80"};
if predprob[i]<= per[5,]
then pred_c[j,i]={"p60-p80"};
if predprob[i]<= per[4,]
then pred_c[j,i]={"p40-p60"};
if predprob[i]<= per[3,]
then pred_c[j,i]={"p20-p40"};
if predprob[i]<= per[2,] 
then pred_c[j,i]={"min-p20"};
end;

end; 打印pred_c;

我该如何解决这个问题?

0 个答案:

没有答案