SAS系统概述

Download Report

Transcript SAS系统概述

第一讲:SAS系统概述
SAS(Statistical Analysis System,统计
分析系统)是20世纪60年代初推出的一种科学的
统计分析技术,如今已广泛地普及和应用于医学、
社会学、市场、经济和自然科学各个领域的信息
处理、定量研究和科研分析中。
1 .1 SAS系统的主要功能与模块
在数据处理和统计分析领域,SAS系统是大型集成
应用软件系统,具有完备的数据访问、数据管理、数
据分析和数据呈现功能。它运用统计分析、时间序列
分析、运筹决策等科学方法进行质量管理、财务管理、
生产优化、风险管理、市场调查和预测等业务,并可
将各种数据以灵活多样的各种报表、图形和三维透视
的形式直观地表现出来。
SAS系统包含了20多个模块,每个模块又包含
若干过程,主要过程有频数统计、交叉汇总表、数
据的排序分类、方差分析、相关与回归分析、制图
和制表、各种高级统计分析过程,如Conjoint(结合)
分析、Factor(因素或称因子)分析、Cluster(聚类)分
析等。
“SAS系统”窗口
常用命令
命 令
Bye
描 述
退出SAS
Clear[window-name] 清除指定的窗口中的内
容
命 令
描 述
Log
进入log窗口
Nums
打开和关闭文本编辑器
的数字区
End
退出当前窗口
options 进入options窗口
file"filename"
存储到指定文件
output
进入output窗口
Help
帮助
progra
m
进入program editor窗口
include"filename"
引入指定文件
recall
调出上次执行的程序
Keys
进入keys窗口
submit
提交一段程序
libname
确认SAS数据库的内容
SAS语言
SAS程序的书写规则
语句可在行的任一列开始和结束;
语句的词之间可以用一个或多个空格符或其它特殊字符隔开;
一个语句可以分写为多行(换行时,换行符相当于一个空格符)
多个语句也可以写在同一行。
但是,规则的书写格式有助于阅读和检查,也可以减少书写
错误,通常习惯使用的规则有:
不同的程序步间留有空行;
每个语句都另起一行。程序步的第一个语句和最后的RUN语
句由第一列开始书写。其它语句按程序的逻辑结构层次每层缩
进固定的列数;
语句的词之间都是固定的一个空格符。
2.1.2 数据步和过程步
数据步(Data Step):
读入源数据文件和SAS数据集,修改、编辑或创建SAS数据
集或文本文件。
过程步(Proc Step):
面向SAS数据集,完成某特定的计算、分析和呈现的功能。
每个程序步都是由若干语句构成,每个语句是由一个关
键词开始,并以分号结束。DATA语句和PROC语句分别标志
数据步和过程步的开始。RUN语句标志程序步的结束。
2.2 SAS数据集和SAS文件
SAS系统分析和呈现数据的过程只面向SAS数据集。当然,SAS也
提供了很多工具,使用户可以方便地实现许多流行数据库文件与SAS数
据集之间的转换,使用户可以面向各种格式数据文件的数据进行分析,
并按用户的需要用不同的方式呈现和提交分析的结果。
SAS系统有自己的面向对象的开发工具。为了实现存储和管理这
些面向对象的开发任务,SAS就建立目录册(Catalog)类型的文件,在
这一类文件中可以存储整个应用系统,包括它的界面、源程序和各种
对象间的连接。这些由SAS建立、维护和管理的文件都称为SAS文件。
2.2.1 SAS逻辑库
从SAS系统来看,它所建立的众多的SAS文件可按不同需要将其
归入若干个SAS逻辑库,以此来对SAS文件进行访问和管理。
SAS 逻辑库
SAS 数据集
数据表
(Data)
数据查询
(View)
SAS 目录
条目
(Catalog
)
其他 SAS 文件
SAS 程序
(Program)
访问描述器
(Access)
2.2.1.1 逻辑库名和引用SAS文件
在SAS系统中,为了访问一个SAS文件,一定要为该SAS文
件所在的位置指定一个SAS逻辑库,即赋予一个逻辑库名或简称
为库名。逻辑库名的命名规则:
由英文字母(A~Z,包括大写和小写)或下划线(_)开始;
由数字、字母和下划线构成;
总共使用1至8个字符。
在指定逻辑库名以后,就可使用两级命名的方式引用SAS文
件:
逻辑库名.文件名
例如,sasuser.class是指逻辑库sasuser中名为class的SAS文件。
注意:在每个SAS进程一开始,系统就自动地指定了一些逻辑库
供用户使用,它们是WORK(临时逻辑库 )、SASHELP和SASUSER(永久逻
辑库 )。
2.3 用数据步读入数据生成SAS的数据集
SAS中基本的数据输入语句包括:
DATA;(数据步的第一条语句)
INPUT;(将源数据文件中的数据读入SAS数据集)
LIST;(列表显示数据的输入格式,以便检查数据是否输入在
它对应的栏位上)
CARDS(或DATALINES);(告诉SAS读取CARDS后面的
数据行)
INFILE‘数据文件名’;(调用外部源数据文件)
RUN;(表示数据步的结束)
2.3.1 数据文件格式与输入模式
2.3.1.1 按列输入模式
对字段固定格式的源数据文件,使用INPUT语句读入时,通常采
用按列输入模式。其一般格式为:
INPUT 变量名[$] 开始列-结束列…;
其中,符号$为字符型变量的选项,若为数值型变量,则不必加这个
符号。
[例 2-1] 在 INPUT 语句中规定各变量的栏目位置
DATA DST.EXAM2;
INPUT ID 1-2 CASID 3-5 N 6 SEX 7 AGE 8-9 EDUC 10 ocu1 11 ocu2 12 sal1 13-15 sal2
16-18 (v1-v5) (5*1.);
CARDS;
11001116031015012021214
11002116542218018011210
11003215531009909512210
…
;
[例 2-2] 在 INPUT 语句中规定变量的小数位
INPUT Id 1-3 Height 4-7 .1 Weight 8-11 .1 Sex 12 Age 13-14;
CARDS;
00116550555145
00217001200225
…
;
注:在Height和Weight的栏位后面用“.1”表示小数位占据1位
[例 2-3] 变量及栏位的紧缩形式
INPUT (V1
V2
V3
V4)(2.
2.
2.
2.);
可改写为:
INPUT (V1-V4) (4*2.);
二者均表示:变量 V1~V4 共有 4 个变量,每个变量的数据分别占有两列宽度。
[例 2-4] 用@n 跳读
INPUT @7 SEX 1. @3 CASEID 3.;
CARDS;
11001116031015012021214
11OO2116542218Ol8O1121O
…
;
注:SAS将从数据行的第7列开始读取SEX的变量值1位数,然后,SAS
回到数据行的第3列开始读CASEID变量值的3位数(此例读的1行的001,
其余类推)。“INPUT @n”语句一般用于读取一个现成的外部数据文件,
因此,INPUT之前应有“INFILE'数据文件名';”语句。用“+n”跳列读取数
据: +n的含义与@n不同。@n是跳读第n列开始的某变量值;而+n表示
“从当前指针位置向右空出n之后”再去读新的变量值。
[例 2-5] 用“#n”跳行读取数据
INPUT @3 CASEID
3. #2 AGE 8-9;
CARDS;
11001116031015012021214
11002116542218018011210
…
;
注:SAS 从第 l 行数据的的第 3 列、第 4 列、第 5 列连读 3 列 CASEID 变量的值,
然后跳到第 2 行读取第 8 列至第 9 列的 AGE 变量的值,依次循环读取。
2.3.1.2 列举输入模式
对于自由格式的数据文件,系统根据分隔符区分各个字段,SAS采用
列举模式读入。其一般形式为:
INPUT 变量名[$]…;
其中,符号$为字符型变量的选项,若为数值型变量,则不必加这个符号。
[例 2-6] 数据用一个以上的空格隔开
DATA DST.EXAM1;
INPUT ID CASID NAME $ SEX AGE EDUC;
CARDS;
01 0001
zhu min
1 35 18
01 0002
li min
2 25 15
…
;
[例2-7] 在字符型变量后加一个字符&,把两个字符串(中间有若干空格)
作为一个整体读取。
将[例2-6]中INPUT语句改为如下格式,则能解决上例中变量NAME的值
不能正确读入的问题:
INPUT ID CASID NAME $ & SEX AGE EDUC;
[例 2-8] 采用跟踪符号“@@”读入一行多个观察值的数据
INPUT EDC
OCU1
SAL1 @@;
CARDS;
09 1 1500 12 2 1600 16 4 1500
12 2 2500 12 2 1300 14 4 1700
…
;
注:若在input语句的最后加入跟踪符号“@”,可保留input语句使用过
的数据行的剩余数据供后面的input语句使用;若在input语句的最后加
入跟踪符号“@@”,则可保留input语句使用过的数据行的剩余数据供
下一个循环使用。本例在INPUT后面用两个“@@”跟踪符号,因此每
行数据可以安排几个观察值(这里是3个观察值),每个观察值分别有3
个变量值。
2.3.1.4 用INFILE语句调用外部数据文件
使用INFILE语句时,必须建立两个文件,一个是纯命令文件,
另一个是纯数据文件。例如,首先要建立以下的命令文件(即程序)。
DATA older;
INFILE 'older.dat'; /*调用当前目录中的older.dat数据文件*/
INPUT ID1 1-2 CASEID 3-5 S EX 7;
其他数据转换语句;
RUN;
其次要在当前目录建立older.dat纯数据文件。
2.3.1.5 通过CARDS命令(或DATALINES命令)读取数据
用CARDS(或DATALINES)命令导读CARDS后面的数据。
CARDS语句的位置如下:
DATA 数据集名;
INPUT 变量名列表;
LIST;
CARDS(或Datalines);
数据行
RUN;
2. 4 数据的输出格式
2.4.1 用FORMAT指定输出格式
可以在数据步的INPUT语句后加入FORMAT语句,其一般形
式为:
FORMAT 变量名 输出格式…;
[例 2-10] 源数据文件 imptdt02.dat 包含如下数据
01MAR90LON198
02MAR90FRA207
03MAR90LON205
在数据步的 INPUT 语句后加入 FORMAT 语句,就可使变量 date 以习惯的(年月-日)格式显示,程序如下:
data indt02;
infile dst(imptdt02);/*全屏显示 imptdt02 数据文件内容*/
input date dat7. dest $3. boarded 3.;
format date yymmdd10.;
run;
2.4.2 用PUT语句改变输出格式
语句格式如下:
PUT <<'字符串'> <变量名<=>><对象.属性<=>>> | _ALL_;
[例 2-11] 用 PUT 语句改变输出格式
DATA dst.l1;
INPUT id 1-2 sex $ 4 age 5-6 height 8-10 weight 12-14 .1;
PUT id sex age; /*显示 3 个变量之值*/
PUT id= weight=; /*在等号后面显示变量值*/
PUT '学生代号是:' id '身高=' height '体重=' weight;/*先显示单引号中的字符串,
再显示其后变量的值*/
LIST; /*为显示观察值之用*/
CARDS;
01 M19 173 672
02 M20 175 575
03 F19 160 540
04 M21 176 700
05 F20 158 585
;
PROC PRINT; /*调用过程 PRINT 在输出窗口输出数据集*/
RUN;
注:@符号与 PUT 连用时,可用以限定字符串所在的起始位置。比如,
“@8”表示从每行的第 8 列位
置开始显示。
2.4.3 用LABEL语句定义变量标签
由于 SAS 或 SPSS 等统计软件的变量名必须以字母为首而且不能超过 8 个字符,
所以,
当一个变量名不足以说明变量的真正含义时,
则用 LABEL 语句解释变量名。LABEL
语句的格式为:
LABEL
变量名='标签';
其中,“变量名”应是 INPUT 语句中已定义的某个变量名。“标签”则是对变量名的
更详细更明确的注解,可放在程序的 DATA 语句的后面。标签内容可以是英文(或汉语
拼音或汉字),长度在 40 个字母以内。
[例 2-12] 用 LABEL 语句定义变量标签
DATA OLDER;
LABEL D1='地区名称';
CASEID='观察值编号';
EDC='老年人的教育水平';
OCU1='退休前的职业';
INFI LE 'OLDER.DAT';
INPUT D1 1-2 CASEID 3-5 SEX 7 AGE 8-9
EDC 10
OCU1 11 OCU2 12;
2.4.4 用FORMAT过程定义数值标签
计算机所读取的数据一般是数字或字母。为了让他人能读懂数据(比如 1 2 3)
的真正含义。通常,还应在命令文件或程序中,用 FORMAT 命令解释数值,这就
是所谓的数值标签,其格式如下:
PROC
FORMAT;
VALUE 格式名
值范围 1='标签 1'
值范围 2='标签 2'
…;
run;
注:值范围可采用 LOW-值 1,值 2-值 3,…,值 k-HIGH。其中“LOW”表示最低
值;
“-” 表示 “至”
;
“HIGH”表示最高值。
[例 2-13] 数值标签的定义
DATA OLDER;
LABEL ID1='地区名称' EDC='老年入的教育水平' OCU1='退休前的职业'
OCU2='退休后的职业';
INFILE 'OLDER.DAT';
INPUT ID1 1-2 CASEID 3-5 NAME 6 SEX 7 AGE 8-9 EDC 10
OCU1 11 OCU2 12;
PROC FORMAT;
VALUE SEXFMT 1='男' 2='女';
VALUE OCUFMT 1='工人' 2='干部' 3='商业服务人员' 4='教师' 5='科技人员';
PROC FREQ; /*执行 FREQ 过程*/
FORMAT SEX SEXFMT.;
TABLE SEX;
PROC MEANS;
VAR SEX EDC OCU1;
RUN;
程序中包含有 VALUE 及 FORMAT 等定义数值标签的语句
2.4.4.2 数值标签的存储和调用
使用过程 FORMAT 可以按需要定义各种数值标签(输出格式)
,一个数值标签一旦
定义,就保存在 SAS 逻辑库的一个名为 FORMATS 的目录册(Catalog)之中。为了在定
义数值标签时将其存入指定的逻辑库,可在过程 FORMAT 的 PROC 语句中加入选项:
PROC FORMAT LIBRARY=库名;
为了在以后使用时能直接由某个逻辑库中调用已定义的数值标签,可在程序中加
入选项 FMTSEARCH,来指定搜索的逻辑库和目录册。其格式为:
OPTIONS FMTSEARCH=(库名 1 库名 2…);
2.4.5 用 LIST 语句显示数据
LIST 命令一般是写在 INPUT 命令的下一行,用于显示数据格式是否对应其栏位,
以便检查数据有无错误或错位。例如:
DATA DST.SALARY;
INPUT EDC OCU1 SAL1 @@;
LIST;
CARDS;
09 1 1500 12 2 1600 16 4 1500
12 . 2500 12 . 1300 14 4 1700
…
;
INPUT 语句的后面写上了 LIST 命令时,SAS 则会显示标尺行并在标尺下面给出数据列
表。
RULE:
一 1—2—3 一 4 一 5—6—7—8—9—1O
2.4.6 缺失值的表示法
如果被访者对于问卷中的某一个问答(变量)避而不答或答得含混不清,这时可把
该变量值指定成缺失值(Missing Values)。输入数据时,遇到此类缺失值可用一个圆
。
”
”表示。比如下面数据行中第 2 行的 OCU1 变量有两处出现缺失值“.
点“.
INPUT EDC OCU1
SAL1 @@;
CARDS;
09 1 1500 12 2 1600 16 4 1500
12 . 2500 12 . 1300 14 4 1700
…
;
2.5 读入数据的选取
2.5.1 IF语句
有些操作命令通常要以IF语句为先决条件,符合IF语句中的条件
时,则可执行DELETE(也可执行GO TO、SUM或LIST)以及赋值等
命令语句。
[例 2-14] 使用 IF 语句选取数据
DATA OLDER;
INFILE 'OLDER.DAT';
INPUT I D1 1-2
CASE D 3-5 SEX
IF SEX EQ 1 THEN DELETE;
6 AGE 8-9;
/*删去性别为男性的观察值*/
LIST; /*列出 SEX=1 以外的所有观察值的变量值,即列出女性的变量值*/
RUN;
不管是微机 SAS 还是非微机 SAS,条件表达式中都允许使用“+、-、*、/、**”5
种算术运算符和“>、>=、<、<=、=、~=”6 种关系运算符;都有“与”、“或”
、“非”
3 种逻辑运算符“&、|、~”。
[例如 2-15] IF 条件中使用关系运算符
IF X+Y=100 THEN LIST;
IF Z>Y THEN Y=X*5;
ELSE Y=X;
[例 2-16] IF 条件中使用逻辑运算符
IF X1=Y1|X2=Y2 THEN LIST;
[例 2-17] 用 DELETE 语句删除数据
DATA XSQ;
INFI LE 'XSQ.DAT';
INPUT ID1 1-2 CASEID 3-5 N 6 SEX 7 AGE 8-9;
IF SEX = 1 THEN
DELETE;
/*删去男性的数据*/
LI ST;
DATA XSQ2;
SET XSQ;
/*新的数据集名为 XSQ2*/
/*新的 XSQ2 数据集是从第一个数据集“XSQ”中复制的*/
IF AGE<50 & SEX=0
别=0(误码)时则删去*/
LIST;
RUN;
THEN DELETE;
/*如果年龄小于 50 岁,而且,性
[例 2-18] 用 GO TO 语句实现转移
DATA EXAM;
INPUT V1 V2 V3;
IF 70<=V1<=80 THEN GO TO OK;
V2=1;
COUNT+1; /*求和语句,对变量 COUNT 进行累加*/
DELETE; /*删除不符合条件的观察*/
RETURN; /*返回数据步的开始*/
OK: SUMX+V1;SUMY+V2; /*SAS 允许一行书写多个语句*/
LIST;
CARDS;
75 83 90
68 75 80
90 100 75
…
RPOC PRINT; /*输出数据集的数据部分*/
RUN;
2.5.2 用RETAIN语句预置变量值
在数据步执行的每次循环中,RETAIN语句将指定的变量初始化。
由于RETAIN命令不是过程(PROC),因此它可放在程序的任何位置。
其命令格式为:
RETAIN 变量1 初值1 变量2 初值2…;
[ 例 2-19] 假 设 某 班 前 5 名 学 生 的 语 文 、 数 学 、 英 语 三 科 成 绩 ( 文 件 名
D:\DST\Score.Dat)如下:
80 70 98
75 88 93
86 .
95
93 97 89
. 99 86
其中有两名学生分别缺考语文、数学,所以在数据行中相应地输入“.”符号。现
在需要统计这五名学生的语文总分、数学总分、英语总分各为多少。
DATA score;
RETAIN count schi smath seng 0;
LABEL chi='语文成绩' math='数学成绩' eng='英语成绩' schi='全班语文
成绩';
INFILE 'd:\dst\Score.dat';
INPUT chi math eng;
count+1;
schi+chi;
smath+math;
seng+eng;
PROC PRINT;
RUN;
注 1:若将[例 2-19 中]的求和语句分别替换为下列赋值语句实现累加 (变量=
表达式;),则为排除缺失值的累加:即遇到原数据如“chi=.”时不往下继续累加,
。
因此其和 schi 也是一个缺失值“.”
schi=schi+chi;
smath=smath+math;
seng=seng+eng;
注 2:若将[例 2-19]中的求和语句改为如下用“SUM 函数”求和(新变量=SUM(新
,则是包含缺失值的累加,将得到类似[例 2-19]的统计结果。
变量,老变量);)
schi=sum(schi,chi);
smath=sum(smath,math);
seng=sum(seng,eng);
2.6.1.1 问卷设计简例
在社会调查与市场研究中,有多种调查研究方法
(如总卷调查法、文献追踪法、内部资料调研法、访谈
调查法、亲自实践法等)。目前,绝大多数是采用发放
问卷的形式采集原始数据。然后,把反馈而来的问卷编
码成计算机统计软件所能识别的数码。
下面举一个简单问卷设计如表2-1所示:
表 2-1 我国部分地区 2001 年人员基本情况调查表
地区编码:11
观察值编码:001
一、性别:1-男 ,2-女
二、居住状况: 1-单身居住,2-两人以上居住
三、居住地: 1-城市, 2-县、镇 , 3-乡村
四、户口特征:1-农业户口, 2-非农业户口
五、年龄: 1-12-19 岁, 2-20-29 岁, 3-30-39 岁, 4-40-49 岁, 5-50-59 岁 ,6-60 岁
以上
六、文化程度:1-文盲, 2-小学, 3-初中 , 4-高中或中专, 5-大专, 6-本科以上
七、职业:1-企业家/经理/厂长工人, 2-干部(包括职员)
,3-一般职员/工人,
4-个体户, 5-教师/科技人员/医生, 6-农民, 7-离退休人员, 8-现役军人,
9-学生 ,10-无业人员 ,11-其他
八、个人月收入(含工资、奖金和其他)
:1-250 元及以下, 2-251-500 元, 3-501-750 元,
4-751-1000 元 , 5-1001-1500 元 , 6-1500-2000 元, 7-2000-3000 元,
8-3000 元以上
九、家庭月收入:1-500 元以下, 2-501-1000 元, 3-1001-1500 元 ,4-1501-2000 元,
5-2001-2500 元, 6-2501-3000 元 ,7-3001-4000 元 ,8-4001-5000 元,
9-5000-6000 元 ,10-6000 元以上
2.6.1.2 数据编码
 观察值(OBS):表 2-1 是一份抽样调查的问卷,也称为“一个观察值”或一个 OBS。
在数学上,每一个可能的观察值称为个体。
 变量及变量名:如同表 2-1 所示,一份问卷设有若干问答,每一问题则是一个变
量。表 2-1 中共有 9 个问题,加上地区编号和观察值编码,一共有 11 个问答。因
此,该份问卷一共有 11 个变量;为使计算机可读起见,每个变量必须赋予唯一的
变量名。SAS 规定每个变量名必须不超过 8 个字符,而且变量名必须以字母为首。
比如,用 ID1 表示“地区编号”的变量名是正确的,但用 1ID 则是错误的。
 变量类型及变量值:同一个变量必须赋予同一类型的数据(变量值)。用阿拉伯数
字表示变量值时,称该变量为“数值型”变量(或数字型变量)。变量值若用字母(或
字母与数字的混合型)表示时,则称该变量为“字符串型”变量;此时,定义变量
时该变量名的后面必须附加一个美元符号“$”;比如,姓名的变量名往往要定义
为“NAME $”
,表示与它对应的变量值将是由字母组成的人名,比如张三(或 Zhang
San)、李四(或 Li Si)等。
 变量值的栏目位置(栏位):计算机在读取变量值时,总是按照人为指定的“栏位”
一一对应地读取数据。所以,数据输入的次序,必须与所定义的变量名的先后次
序及指定的“栏位”一一对应,不能错位。而且,
“固定格式”变量值必须输入在
固定的栏位上。为此,每一个变量名的后面,还应该指定该变量值的起始列和终
止列。比如表 2-2 的性别编码为“sex 6”,年龄编码为“age 10”等。如果是字
符型(比如“name $ 19-29”)的变量值时,由于栏位是“19-29”,则表示所有的
人名都应输入在每行的第 19 列~第 29 列上。
变量值的栏位数视问卷中该变量值的最大长度而定。比如,3 个汉字的人名,若
用汉语拼音时,则可多达 20 个字母。因此,指定栏位时,必须依上限而定。因而,
此处定义为“name $ 19-29”
。
2.6.1.3 一个数据编码方案
表 2-2
对表 2-1 的数据编码
变量
变量名
栏位
编码
地区编号
观察值编码
性别
居住状况
居住地
户口特征
年龄
文化程度
职业
个人月收入
家庭月收入
id1
caseid
sex
status
reside
reg
age
edc
ocu
icm1
icm2
1-2
3-5
6
7
8
9
10
11
12-13
14
15-16
11
001
1
2(两人以上居住)
1(城市)
2(非农业户口
6-60 岁以上
3(初中)
1(企业家/经理/厂长)
8(3000 元以上)
10(6000 元以上)
2.6.2 一个简单的SAS编程
[例 2-20] 某些地区人员基本情况抽样调查 SAS 程序例。
DATA base; /*读取的数据存入 base 数据集*/
INPUT id1 1-2 casedid 3-5 sex 6 status 7 reside 8 reg 9 age 10 edc
11 ocu 11-13
icm1 14 icm2 15-16;
LIST;
/*显示每行的数据,以便核对。可省略*/
CARD;
/*告诉 SAS,数据行从下一行开始读起*/
0100112124602607
0100222124303607
…
0103022121409103
;
PROC PRINT; /*显示观察值,可省略*/
TITLE '某些地区人员基本情况抽样调查';
/*TI TLE' '中的内容是标题名
称*/
PROC PLOT; /*绘制散点图*/
PLOT edc*ocu=sex; /*以性别 1 或性别 2 为图点的记号,画出教育水平与职
业两变量值的纵横交点,组成一幅散点图*/
PROC CHART; /*调用直方图、条形图过程*/
VBAR ocu;
/*画出职业的垂直条形图*/
HBAR sex;
/*画出性别的水平条形图*/
PROC FREQ;
/*调用频次统计过程*/
TABLES edc;/*计算 EDC 的频次*/
TABLES edc*icm1;/*制作交互分类表*/
PROC MEANS; /*调用 MEANS 过程,计算上述 edc、ocu 和 icm1 各个变量的
均值、观察值和方差等 9 种参数*/
PROC SORT; /*调用 SORT 过程*/
BY sex edc;/*按性别、教育年限排序*/
PROC PRINT; /*有了此条语句才能显示排序结果*/
PROC MEANS; /*再次调用 MEANS 过程,以便计算 8 种描述性统计量*/
BY sex edc;
RUN;
命令*/
/*按 sex、edc 变量值分组,计算描述性统计量*/
/*微机 SAS 须有 RUN 命令。大、中、小型机中的 SAS 则不需要 RUN