webgu 发表于 2013-4-9 08:02 
ods rtf ;
proc princomp;
...
以下是我的SAS程序,你给的程序应给加那里??我只是个除学者,麻烦您说清楚点。
data gs2;
input name $ x1-x11;
cards;
兰州市 1.43 1.02 1.36 1.04 2.92 5.90 5.50 1.11 1.01 4.90 0.70
嘉峪关 3.84 1.73 0.47 2.40 0.22 0.55 0.26 1.32 0.92 0.29 0.02
金昌市 1.90 1.65 0.46 2.09 0.42 0.47 0.37 1.40 0.96 0.38 0.11
白银市 0.83 1.21 0.88 1.33 0.74 0.76 0.88 1.11 0.92 0.73 1.06
天水市 0.42 0.84 1.16 0.63 0.98 1.01 1.29 0.91 1.00 1.21 1.81
武威市 0.57 0.89 0.93 0.67 0.96 0.34 0.76 0.93 1.09 0.88 0.88
张掖市 0.81 0.79 0.97 0.68 0.49 0.42 0.69 0.87 0.85 0.67 0.48
平凉市 0.51 1.02 0.87 0.98 0.97 0.61 0.89 0.93 1.07 0.80 0.93
酒泉市 1.66 1.10 0.99 1.00 1.81 1.01 0.90 1.20 0.88 1.05 0.58
庆阳市 0.78 1.34 0.67 1.57 1.73 1.78 0.96 1.00 0.93 0.92 1.39
定西市 0.26 0.58 1.23 0.26 0.91 0.30 0.54 0.86 0.93 0.70 1.68
陇南市 0.29 0.65 1.23 0.48 0.97 0.46 0.42 0.85 1.20 0.73 1.81
临夏州 0.25 0.65 1.35 0.37 0.47 0.23 0.35 0.68 1.24 0.50 1.89
甘南州 0.45 0.53 1.44 0.38 0.41 0.16 0.20 0.82 0.99 0.24 0.68
;
proc princomp data=gs2 prefix=z n=11 out=result(drop=name x1-x11);
var x1-x11;
run;
proc print data=result;
var z1-z11;
run;
data gszjia;
set gs2(keep=name);
set result;
y=0.4765*z1+0.3528*z2+0.0741*z3+0.0478*z4+0.0190*z5+0.0149*z6+0.0098*z7+0.0044*z8+0.0007*z9+0.0001*z10;
run;
proc sort data=gszjia equals;
by descending y ;
run;
proc print data=gszjia;
var name y z1-z11;
run;
proc datasets lib=work;
delete result;
quit;