Proc Means:Means过程介绍

[b]原文没有提供数据,所以就在网上随便找了个数据进行测试,地址如下:
http://www.sasenterpriseminer.com/data/htwt.xls
该数据包含4个变量(性别sex,年龄age,身高height,体重weight),共237个观测[/b]

语法:
proc means ;
by variable(s);
class variable(s) ;
freq variable;
id variable(s);
output ;
types request(s);
var variable(s);
ways list;
weight variable;
直接运行 proc means过程时,会对所有数值型变量进行操作,得到各变量的非缺失观测数N,均值MEAN,标准差STD DEV,最大值Max和最小值Min。


proc means data =Htwt;
run;

结果:
[table]
|变量 标签 N 均值 标准偏差 最小值 最大值
|
|age age 237 16.4430380 1.8425767 13.9000000 25.0000000
|
|height height 237 61.3645570 3.9454019 50.5000000 72.0000000
|
|weight weight 237 101.3080169 19.4406980 50.5000000 171.5000000|
[/table]
我们还可以增加range(极差) sum(和) var(方差) mean(均值) nmiss(缺失值个数) median(中值)等选项得到其统计量。
proc means data =Htwt range sum var mean nmiss median;
run;
结果略。

[b]Class:对变量进行分组操作[/b]


proc means data = Htwt range sum var mean nmiss median;
var height;
class sex;
run;

结果:

[table]
|分析变量:height height
|
|sex 观测的个数 极差 总和 方差 均值 缺失值个数 中位数
|
|f 111 15.5000000 6718.40 11.2781294 60.5261261 0 61.3000000
|
|m 126 21.5000000 7825.00 18.2900698 62.1031746 0 61.9000000 |
[/table]
[b]out:输出结果数据集[/b]

proc means data = Htwt range sum var mean nmiss median;
var height;
class sex;
output out=height n = cnt sum = total mean = avg;
run;
proc print data=height;
run;

结果:
[table]
|Obs sex _TYPE_ _FREQ_ cnt total avg
|1 0 237 237 14543.4 61.3646
|2 f 1 111 111 6718.4 60.5261
|3 m 1 126 126 7825.0 62.1032|
[/table]
这里的n,sum,mean选项也可以用autoname自动命名。
这里的_TYPE_,当其值为0时,表示对总体进行操作,当其值为1时,表示对各个sex子集进行操作。如果这里的class后有两个变量,例如class sex age,则_type_会有4个值:
0 整个数据集的means操作
1 对age进行子集means操作(以字母为序)
2 对sex进行子集means操作(以字母为序)
3 对sex,age进行交叉子集子集means操作,即sex*age
[b]types :对以上所述的_type_进行选择输出。[/b]

proc means data = Htwt range sum var mean nmiss median;
var height;
class sex age;
types sex sex*age;
output out=height sum = n = /autoname;
run;
proc print data=height;
run;

只对_type_=2和3的结果进行输出到height数据集中。
如果要对_type_进行二进制层级显示,则要用到charttype选项。
proc means data = Htwt noprint chartype;
var height;
class sex age;
types sex age sex*age;
output out=height sum = n = /autoname;
run;
proc print data=height;
run;


[table]
|结果:
|
|Obs sex age _TYPE_ _FREQ_ Sum height_N
|
|1 13.9 01 5 287.3 5
|
|2 14.0 01 7 398.6 7
|
|3 14.1 01 5 289.9 5
|
|61 f . 10 111 6718.4 111
|
|62 m . 10 126 7825.0 126
|
|63 f 13.9 11 3 171.8 3
|
|64 f 14.0 11 3 167.3 3
|
|65 f 14.1 11 3 179.1 3|
[/table]
这里age的_type_为01,sex的_type_为10,两者交叉_type_就为11。
[b]T检验:height的均值是否为70[/b]
data Htwttt;
set Htwt;
heighttt=height-70;
run;
proc means data = Htwttt n mean stderr t prt maxdec = 1 fw = 5;
var height heighttt;
run;

[b]t :t值[/b]
prt:大于t值的概率
maxdec:输出参数的数值的小数点位数
fw:fields width,宽度
结果:

[table]
|变量 标签 N 均值 标准误差 t 值 Pr > |t|
|
|---------------------------------------------------------------------
|
|height height 237 61.4 0.3 239.44 <.0001
|
|heighttt 237 -8.6 0.3 -33.70 <.0001|
[/table]

这里P值都小于0.01,故拒绝原假设

你可能感兴趣的:(Proc Means:Means过程介绍)