*代码如下*
data work.risk1; /*克隆包含函数定义的数据集*/
set sas.risk;
run;
proc fcmp outlib=work.risk.aaa;
function cvdrisk(sex,age,sbp,tcl,hdl,smoke,trtbp,diab);
c2=sex;
c3=log(age);
c4=log(sbp);
c5=log(tcl);
c6=log(hdl);
c7=smoke;
c8=trtbp;
c9=diab;
d3=3.06117;
d4=1.93303;
d5=1.1237;
d6=-0.93263;
d7=0.65451;
d9=0.57367;
e4=1.99881;
f3=2.32888;
f4=2.76157;
f5=1.20904;
f6=-0.70833;
f7=0.52873;
f9=0.69154;
g4=2.82263;
d11=C3*D3+C4*D4+C5*D5+C6*D6+C7*D7+C9*D9;
e11=C3*D3+C4*E4+C5*D5+C6*D6+C7*D7+C9*D9;
f11=C3*F3+C4*F4+C5*F5+C6*F6+C7*F7+C9*F9;
g11=C3*F3+C4*G4+C5*F5+C6*F6+C7*F7+C9*F9;
d13=1-0.88936**EXP(D11-23.9802);
e13=1-0.88936**EXP(E11-23.9802);
f13=1-0.95012**EXP(F11-26.1931);
g13=1-0.95012**EXP(G11-26.1931);
if c2=1 and c8=0 then risk=d13;
else if C2=1 and C8=1 then risk=e13;
else if C2=0 and C8=0 then risk=f13;
else if C2=0 and C8=1 then risk=g13;
else risk='ERROR';
return(risk);
endsub;
run;
options cmplib=(work.risk);
data a;
set sas.risk;
risk=cvdrisk(sex,age,sbp,tcl,hdl,smoke,trtbp,diab);
run;
|