数据步是SAS系统用来对外部数据文件或其他数据库中的表数据或已经生成的数据集进行处理的过程,其目的是生成SAS能识别的数据。数据步处理完成后,生成的数据存储到逻辑库对应目录中,SAS其他模块或过程步调用数据步生成的数据,进行数据分析。无论是SAS/EM(数据挖掘模块)还是SAS/EG(报表开发模块)等,都是以数据为基础的。
SAS系统有两大步,称为数据步和过程步。所谓数据步就是一个动态处理数据的过程,处理数据的目的是生成SAS系统能识别的数据集,数据集默认扩展名为“.sas7dbat”。
数据步以“DATA”关键字为开始的标志,以“RUN”语句为结束标志,每个语句的结束符号为“;”。数据步可以一次创建多个数据集,数据集名之间以空格分隔。
下面介绍一个例子:
已知外部文件存储在“d:\test\xy.dat”的目录下,此数据集为人口普查数据集,请将此数据文件中北京和上海两个城市的数据放到一起,生成数据集名为bjsh,其他城市的人口数据信息生成数据集名为qita,数据集保存到“d:\test”目录下。
程序如下:
LIBNAME xyy 'd:\test'; /*定义数据集存储物理路径的逻辑库*/
%let lj= 'd:\test\xy.dat'; /*外部数据文件的路径*/
Filename fil "(&lj)"; /*此语句指定定义逻辑文件名*/
DATA xyy.bjsh xyy.qita; /*同时建立两个数据集,分别是bjsh和qita*/
infile fil; /*读入外部文件*/
input id $ popucount city $;
if city in ('北京','上海') then output xyy.bjsh;
/*if语句条件判断,output语句后面为输出到数据集名*/
/*把北京和上海两大城市的人口数据存储到数据集bjsh*/
else output xyy.qita; /*把其他城市人口数据存储到数据集qita*/
RUN; /*数据步结束*/
PROC print data=xyy.bjsh; /*打印数据集bjsh*/
RUN;
输出窗口显示此数据集只有北京和上海两个城市人口信息结果:
Obs id popucount city
1 001 1800000 北京
2 002 1700000 上海
程序解读:
数据步通过if条件语句判断city变量,把in('北京','上海')语句符合条件的数据通过OUTPUT语句输出到数据集xyy.bjsh,不符合条件的输出到数据集xyy.qita。程序运行完成后,两个数据集生成到制定目录,为便于验证是否数据生成到对应数据集,执行打印输出程序,,将北京和上海两个城市的数据打印输出到窗口。
来源:oschina
链接:https://my.oschina.net/u/1866370/blog/550943