数据步是SAS系统用来对外部数据文件或其余数据库中的表数据或已经生成的数据集进行处理的过程,其目的是生成SAS能识别的数据。数据步处理完成后,生成的数据存储到逻辑库对应目录中,SAS其余模块或过程步调用数据步生成的数据,进行数据分析。不管是SAS/EM(数据挖掘模块)仍是SAS/EG(报表开发模块)等,都是以数据为基础的。 java
SAS系统有两大步,称为数据步和过程步。所谓数据步就是一个动态处理数据的过程,处理数据的目的是生成SAS系统能识别的数据集,数据集默认扩展名为“.sas7dbat”。 数据库
数据步以“DATA”关键字为开始的标志,以“RUN”语句为结束标志,每一个语句的结束符号为“;”。数据步能够一次建立多个数据集,数据集名之间以空格分隔。 code
下面介绍一个例子: ci
已知外部文件存储在“d:\test\xy.dat”的目录下,此数据集为人口普查数据集,请将此数据文件中北京和上海两个城市的数据放到一块儿,生成数据集名为bjsh,其余城市的人口数据信息生成数据集名为qita,数据集保存到“d:\test”目录下。 开发
程序以下: input
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。程序运行完成后,两个数据集生成到制定目录,为便于验证是否数据生成到对应数据集,执行打印输出程序,,将北京和上海两个城市的数据打印输出到窗口。