3、proc过程步
• 常用过程名 :
Print
,
means
,
Sort
,
Format
, Contents
• 常用过程步语句 :Var,By,class,output,Where,Label,Format
[格式]
PROC <过程名> [DATA=<输入数据集>] [<选项>];
<过程步语句>/<选项>;
<过程步语句>/<选项>;
RUN;
1)常用过程语句
- 输出列表过程PRINT
[作用]
PRINT
过程来列出数据集的内容,
检查变量与值之间的对应是否正确,数据输入是否正确。
[语法格式]:
PROC PRINT [DATA = <数据集>] [NOOBS] [(OBS=n)];
[VAR <变量列表>;]
[WHERE <表达式>;]
[LABEL..]
[FORMAT..]
…….
RUN;
data:“DATA=选项”指定要列表的数据集名;
NOOBS选项:指定是否输出观测号;
(OBS=n):选项指前n项观测;
- 排序过程SORT
[作用]
用BY语句对观测值进行分类前需要先用SORT过程排序。 SORT过程可以把数据集按某一个或若干个变量的次序进行排序。
[语法格式]:
PROC SORT [DATA = <数据集>] [OUT = <输出数据集名>];
[BY [DESCENDING ] <变量列表>;]
RUN;
OUT选项:指定的数据集为输出数据集,若省略OUT选项,则输入数据集与输出数据集
为同一个数据集。
BY语句中在一个
变量名前面
加上DESCENDING关键字表示此变量的排序是由大到。默认升序
- 定义格式过程FORMAT
[作用]
设定数据的输出格式,对变量的不同值或不同范围的值设定不同的
“标签”来显示
[语法格式]:
其中格式名的命名规则与逻辑库名相同
PROC FORMAT;
VALUE <格式名> <范围1> = '<标签1>'
<范围2> = '<标签2>'
……;
RUN;
[应用]
先定义format格式,再引用格式:
定义:
proc format;
value 格式名 ‘范围1’=‘标签1’
‘范围2’=‘标签2’...;
run;
引用:
PROC 过程名 DATA=数据集名;
过程语句;
FORMAT 数据集中的变量名 格式名.;
RUN;
*修改观测值;
proc format;
value $kidSEX '女'='girl' '男'='boy';
run;
proc print data=sashelp.class;
format sex $kidSEX.;
run;
*为数值型的值范围定义格式;
Proc format;
Value WClass low-<90="light"
90-<120="med"
120-high="heavy";
Run;
Proc print data=sashelp.class;
Format weight WClass.;
Run;
- 过程CONTENTS
显示
SAS
数据集的描述部分
proc contents data=sashelp.class;
run;
返回
2)常用过程步语句
- VAR语句
[作用]
用来指定需要分析的变量
[格式
]
VAR <变量名1> <变量名2> ... <变量名n>;
Proc print data=sashelp.class;
Var name age height;
Run;
VAR语句中的变量顺序,也是将来输出结果时的变量顺序。 通常VAR语句是放在过程的开始处。
- CLASS语句
[作用]
在
某些SAS过程
中,用来指定一些分类变量。
[格式]
proc 过程名 data=数据集名;
class 变量名1 变量名2...;
run;
[案例]
*按男女分类统计class数据集中收入weight的均值等统计量。程序如下;
Proc Means Data=sashelp.class ;
Class Sex ;
Var weight;
Title “How to use CLASS statement”;
Run ;
- BY语句
[作用]
在过程中一般用来指定一个或几个分类变量,根据这些分类变量值把观测分组,然后对每
一组观测分别进行本过程指定的分析
[格式]
BY <变量名1> <变量名2> ...;
注意:在使用带有BY语句的过程步之前要先用SORT过程对数据集排序,by语句跟sort过程是同一个变量
Proc Sort Data=sashelp.class;
By Sex ;
Proc Means;
by Sex ;
Var weight;
Title “How to use BY statement”;
Run ;
与class的区别:
CLASS语句使用时,不要求数据集事先按CLASS指定的变量排序;且进行分类计
算和分析后,输出的分类结果列在一张报表里。
BY语句在使用时,要求数据集事先按BY指定的变量排序,且输出的结果也按分
组列出多个报表。

- OUTPUT语句
[作用]
将结果输出为一个数据集
[格式]
OUTPUT OUT = <输出数据集名> <关键字>=<变量名> <关键字>=<变量名>...;
其中用
OUT=
给出了要生成的结果数据集的
名字,用“关键字
=
变量名”的方式指
定了输出哪些结果
(
关键字是如
MEANS
过程中的
MEAN
,
VAR
,
STD
那样的要
输出的结果名
)
,等号后面的变量名指定
这些结果在输出数据集中的变量名称。
WHERE语句
[案例]
proc means data=sashelp.class;
Class sex;
var weight;
output out=result2 n=n mean=meanh var=varh;
run;
-
where语句
[作用]
筛选数据集的一个行子集来进行分析
[格式]
WHERE <条件>;
使用方法、条件表达格式均同DATA步中的WHERE语句;
不同的是,在DATA步中可以用IF选择语句,但数据步中,不能使用IF选择语句。
- FORMAT语句
FORMAT 变量名 输出格式;

PROC步中的FORMAT语句与DATA步中的FORMAT语句格式相同;
PROC步中的输出格式只在PROC指定的过程中有效;而DATA步中的输出格式定义了变量的输出属性, 其保留在数据集中;
FORMAT语句可以使用的输出格式:
①
SAS
系统的输出格式;
②
PROC FORMAT
过程定义的输出格式
- LABEL语句
LABEL <变量名>='<标签>' <变量名>='<标签>'...;
[案例]
Data a;
Input num $ gender $ h w;
Cards;
101 M 1.72 61
102 F 1.60 50
Proc print label;
Label h=‘身高’ w=‘体重’;
Run;
Proc means ;
Label h=‘height’ w=‘weight’;
Run;