2 F 1 8 162.125 64.75 4.18970 7.4976 3 M 1 8 175.000 78.25 5.90399 8.2419
PROC SUMMARY结果中, _TYPE_和_FREQ_是变量在SAS 程序运行过程中自动产生的变量。TYPE具有CLASS 的情报。所以,打印总体(OBS=1)统计量(因为男女不分类)时,TYPE =0;打印身高和体重的统计量(因为男女分类)时,TYPE=1。FREQ代表观测值的频数,即观测值出现的次数。因为CLASS按男女分类,所以,当TYPE=0时,FREQ=16代表总体的频数,当type=1时,FREQ=8代表男组和女组的频数。
3.7 PROC STANDARD 对于单位不同的变量难以直接比较研究。在统计分析中为了对这些单位互不相同的各变量进行比较研究,通常我们先把这些变量进行标准化,使得各变量的平均值和方差相同。所谓的标准化是指用各变量减去该变量的平均值,然后再用该变量的标准差相除(平均值为0,方差为1情况)。在SAS程序中,利用PROC STANDARD命令,对变量进行标准化处理。其标准化运算过程非常简单,其一般形式为:
因为PROC STANDARD命令和PROC SORT或SUMMARY等命令一样,没有输出功能,所以要要看其运行结果必须利用PROC PRINT命令。 ① option
-data=dsn out=new dsn;前一项是指定要标准化的资料名,后一项是标准化以后
的新资料名,即标准化处理后的资料以新的资料名(new dsn)储存。 -mean=a:规定标准化变量的平均值等于a。 -std=s:规定标准化变量的方差等于s。
②VAR变量名: 对VAR指定的变量进行标准化。
③BY变量名:对VAR指定的变量进行标准化时,以BY所指定的变量为基准。 例2-26:对学生的考试成绩进行标准化,使得各成绩的平均成绩及标准差分别为80和5。 DATA abc;
INPUT id section test1-test3 @@;
stest1=test1; stest2=test2; stest3=test3;
PROC STANDARD [data=dsn] option; VAR 变量名; BY 变量名;
21
CARDS;
2356897 1 94 91 87 2547899 1 95 96 97 2589441 2 91 86 94 4587921 2 80 76 78 4547885 1 92 40 85 2245874 2 75 76 80 3325641 2 66 69 72 9958452 1 82 84 80 2587945 1 75 76 70 5852452 2 51 66 91 RUN;
PROC SORT; BY section;
PROC STANDARD MEAN=80 STD=5 OUT=new; BY section; VAR stest1-stest3; PROC PRINT data=new; BY section; TITLE 'SANDARDIZED TEST SCORES';
PROC MEANS data=new(drop=id) maxdec=2 n MEAN STD; BY section; RUN;
□运行结果: SANDARDIZED TEST SCORES
--------------------SECTION=1 --------------------------------
OBS ID TEST1 TEST2 TEST3 STEST1 STEST2 STEST3
1 2356897 94 91 87 83.6634 83.0601 81.6187
2 2547899 95 96 97 84.2358 84.1851 86.6772
3 4547885 92 40 85 82.5186 71.5848 80.6070
4 9958452 82 84 80 76.7945 81.4850 78.0778
5 2587945 75 86 70 72.7876 79.6850 73.0193
--------------------------SECTION=2 --------------------------------
OBS ID TEST1 TEST2 TEST3 STEST1 STEST2 STEST3
6 2589441 91 86 94 86.1022 87.3710 85.9656 7 4587921 80 76 78 82.4542 80.9052 77.2884 8 2245874 75 76 80 80.7959 80.9052 78.3730 9 3325641 66 69 72 77.8112 76.3792 74.0344 10 5852452 51 66 91 72.8365 74.4394 84.3386 SANDARDIZED TEST SCORES
-------------SECTION=1------------- Variable n Mean Std Dev
22
--------------------------------------- TEST1 5 87.56 8.73 TEST2 5 77.40 22.22 TEST3 5 83.80 9.88 STEST1 5 80.00 5.00 STEST2 5 80.00 5.00 STEST3 5 80.00 5.00 --------------------------------------- SANDARDIZED TEST SCORES
------------- SECTION=2 ---------------- Varible n Mean Std Dev TEST1 5 72.60 15.08 TEST2 5 74.60 7.73 TEST3 5 83.00 9.22 STEST1 5 80.00 5.00 STEST2 5 80.00 5.00 STEST3 5 80.00 5.00 ---------------------------------------
3.8 PROC TRANSPOSE(不讲) PROC TRANSPOSE命令具有交换DATA set的行和列位置的功能,即把观测值和变量相互交换。在多变量SAS统计分析中经常使用PROC TRANSPOSE命令,其基本形式如下:
PROC TRANSPOSE [data=dsn] option; ←①
VAR 变量名; ←
BY 变量名; ←
□PROGRAM解释: ①option
- DATA=dsn。OUT=new dsn??
- PREFIX=name? 给新产生的data set命名。假设PREFIX=mina,则按mina1,
23
mina2?式命名。如果对新产生的data set不命名的话,自动给新的data set命名;col1,col2,?
②VAR变量名: VAR所指定的变量是进行交换之前的原有变量。 ③BY 变量名: BY 所指定的变量是基准的变量。 例2-27:TRANSPOSE.sas
下面的资料是有关个人体力情报的资料,姓名(name)、性别(gender)、体重(weight)、腰围(waist)、脉搏数(pulse)、仰卧起坐(situps)、跳高(jumps)等。 □SAS PROGRAM; DATA one;
INPUT name $ gender $ weight waist pulse situp jumps @@; CARDS;
Wuyian f 182 36 56 101 42 Duming m 189 35 46 155 58 Wangli m 193 36 46 102 31 Xiaoyun f 147 46 50 98 50 Kangyu f 166 33 52 210 99 Wuzhao f 191 36 50 162 36 Minhui m 211 38 56 185 86 Dongli m 189 37 52 110 62 RUN;
PROC TRANSPOSE DATA=one OUT=two;
VAR weight waist pulse situp jumps; PROC PRINT data=one; RUN;
PROC PRINT data=two; RUN; 运行结果
OBS NAME GENDER WEIGHT WAIST SITUP JUMPS
1 Wuyian f 182 36 56 101 42
2 Duming m 189 35 46 155 58
3 Wangli m 193 36 46 102 31
4 Xiaoyun f 147 46 98 50
5 Kangyu f 166 33 52 210 99
6 Wuzhao f 191 36 50
24
PULSE 50
162 36
7 Minhui m 211 38 56 185 86
8 Dongli m 189 37 52 110 62
OBS _NAME_ COL1 COL2 COL3 COL4 COL5 COL6 COL7 COL8
1 WEIGHT 182 189 193 147 166 191 211 189
2 WAIST 36 35 36 46 33 36 38 37
3 PULSE 56 46 46 50 52 50 56 52
4 SITUP 101 155 102 98 210 162 185 110
5 JUMPS 42 58 31 50 99 36 86 62
3.9 PROC RANK(不讲)
PROC RANK [data=dsn] [out=dsn] option; ? a) VAR 变量名; ? b) RANK 新变量名; ? c) BY 变量名; ? d)
25