《第2章SAS编程基础.ppt》由会员分享,可在线阅读,更多相关《第2章SAS编程基础.ppt(64页珍藏版)》请在三一文库上搜索。
1、第二章 SAS编程基础,SAS程序结构 变量、常数、表达式和函数 数据输入 数据输出 输入和输出格式,数据集的操作 变量的控制 观测数据的管理 条件语句与循环语句 过程步介绍,一、SAS程序结构,SAS程序由若干个SAS语句(Statements)组成。 按照结构和功能可以将SAS程序分为两个程序步:数据步(Data Steps)用于生成数据集并对对数据集进行加工处理;过程步(Proc Steps)用于对数据进行分析并输出结果。 一个SAS程序可以只有一个数据步或者只有一个过程步,也可以由一个数据步和一个过程步组成,或者由多个数据步和过程步任意组合而成。,一、 SAS程序结构,SAS语句一般由
2、SAS关键词开始,以英文分号(;)结尾,语句中还包括SAS变量、常数、运算符、函数和一些特殊字符等。SAS语句的书写比较自由,基本规则为: 语句可以在行的任何位置开始; 一个语句可以分写成多行; 多个语句可以写在同一行; 语句中各项之间至少用一个空格或特殊字符隔开; 语句中不区分字母的大小写。 在SAS程序中可以添加注释语句,其形式为: /* 注释内容 */ 或者 * 注释内容;,1、SAS语句,一、 SAS程序结构,数据步以DATA语句开头,其后可以包含多个SAS语句。其中,DATA语句用来建立SAS数据集,其后的各语句一般用来输入数据和对数据进行修改、编辑等管理操作。数据步的一般形式为:,
3、2、数据步,DATA 数据集名; 数据步语句; 数据步语句; RUN:,RUN语句表示SAS程序的结束,如果有多个数据步或过程步,可以有多个RUN语句,也可以只有一个RUN在最后结尾。,一、 SAS程序结构,过程步要求SAS从系统中调出一个过程(对应一种统计分析方法或一种数据呈现功能),并对指定的数据集执行这个过程。过程步以PROC语句开头,指出调用的过程名和要分析的数据集,其后的各语句用来指定调用过程的各个参数。过程步的一般形式为:,3、过程步,PROC 过程名 DATA=数据集名; 过程步语句; 过程步语句; RUN:,其中在PROC语句中,DATA=数据集名是可选的,缺省情况下使用最近生
4、成的数据集。一般情况下,除了一些全局通用语句外,过程步语句与数据步语句是不同的,两者不能混用。,二、变量、常数、表达式和函数,SAS变量用来描述数据的特征。在SAS数据集中,每一个列就是一个变量,列中数据值就是变量的值。 SAS变量的属性(Attributes)包括名称(Name)、类型(Type)、长度(Length)、输入格式(Informat)、输出格式(Format)以及标签(Label)。,1、变量,二、变量、常数、表达式和函数,SAS常数用来表示固定的值,包括数字、字符串以及其他一些特殊记号。SAS常数可分为三种类型: 数值型常数:即SAS语句中的数字。例如1,-0.53,6E-1
5、9 字符型常数:由单引号引起来的字符串,最大长度为32767个字节,例如 南开大学90周年 ,NANKAI UNIVERSITY 日期时间型常数:在SAS系统中,日期和时间都有特殊的存储方式。在将日期时间值表示为常数时,采用DATE.,TIME.和DATETIME.格式,并用单引号引起来,其后再跟一个标志字符D(日期)、T(时间)或DT(日期时间)。例如1jan1991d,21:53t,14feb2010:14:21:30dt,2、常数,二、变量、常数、表达式和函数,表达式由运算对象和运算符组成,它在被执行后产生一个目标值。运算对象一般是变量和常数,运算符主要包括算术运算符、比较运算符、逻辑运
6、算符、函数和括号等。 下面的几个例子都是表达式:,3、表达式,Y=X+1; LOG(X); N500;,二、变量、常数、表达式和函数,SAS表达式中的基本运算符包括: 算术运算符:+(加)、*(乘)、(减)、*(乘方)、/(除) 比较运算符:= 或 EQ(等于)、= 或 NE(不等于)、 或 GT(大于)、= 或 GE(大于或等于)、(最大)、(最小)、|(连接),3、表达式,二、变量、常数、表达式和函数,在SAS语言中,表达式的运算优先级准则为: 先计算括号里的表达式; 先执行优先级较高的运算; 对于相同优先级的运算,先执行左边的运算。但是对于同处第1优先级的运算,则先执行右边的运算。,3、
7、表达式,二、变量、常数、表达式和函数,3、表达式,(续上表),二、变量、常数、表达式和函数,SAS函数是SAS系统提供的一些内置的子程序,它通过自变量返回结果值。SAS函数的一般形式为:,4、函数,函数名 (自变量1, 自变量2 , ),自变量的个数对于不同的函数是不同的。有些函数只有一个自变量,有些函数有多个自变量,而有些函数则不需要自变量。对于某些函数,各个自变量具有不同的含义,因此其自变量的次序是不能随意调整的。而对于另一些函数,自变量次序是可以随意改变的,如求和函数SUM,最大值函数MAX等,此时可用关键词OF对这些自变量列进行缩写,其形式为:,函数名 ( OF 变量列 ),二、变量、
8、常数、表达式和函数,SAS系统为方便用户编程提供了丰富的函数,按照功能的不同,可以将常见的函数分为以下几类:,4、函数,数学函数:ABS(x)、EXP(x)、LOG(x)等 截取函数:CEIL(x)、FLOOR(x)、ROUND(x, p)等 三角函数:COS(x)、SIN(x)、TAN(x) 等 日期时间函数:DATE() 、TIME()等 描述性统计函数:SUM(x1, x2, xn) ,MAX(x1, x2, xn)、 VAR(x1, x2, xn)等 概率分布函数:PROBNORM(x) 、PROBT(x, df, nc) 等 分位数函数:PROBIT(p) 、TINV(p, df,
9、nc) 等 随机数函数:UNIFORM(seed) 、NORMAL(seed) 等 特殊函数:LAGn(x) 、DIFn(x) 等,三、数据输入,在数据量不大的情况下,一般在程序编辑器窗口将数据行和SAS程序写在一起,完成数据输入,一般形式为:,1、数据来源和数据步形式,DATA 数据集名; INPUT语句; CARDS; 数据行 ; RUN;,其中,INPUT语句用来读入数据,它根据数据行形式的不同而采用不同的语句格式。CARDS语句可以换成DATALINES语句,两个语句有着相同的功能,即提示SAS系统下面紧跟的是数据行。,三、数据输入,如果数据量较大,一般直接从外部数据文件读入数据。此时
10、,数据步的形式为:,1、数据来源和数据步形式,DATA 数据集名; INFILE 文件路径 ; INPUT语句; RUN;,其中,INFILE语句用于指定一个外部文件,然后由INPUT语句读入数据。INPUT语句根据外部文件中数据形式的不同而采用不同的语句格式。,三、数据输入,对于严格按列排好的标准数据,可采用按列输入的方法。通过INPUT语句声明每个变量的输入值所在的列,系统严格按照指定的列数完成输入。按列输入时,INPUT语句所采用的格式为:,2、按列输入,INPUT 变量名 起始列数 ;,其中,美元符号$为可选项,如果加上该符号则表明变量为字符型变量,读入的数据则为字符型数据。起始列数,
11、表明变量从该列开始读入数据。结束列数为可选项,表明变量在该列结束读入。,三、数据输入,对于有固定分隔符,但是列形式不统一的数据,可采用列表输入的方法。不同于按列输入时需要指定输入列数,在列表输入中系统通过分隔符即可自动区分每个数据。通过INPUT语句,按照变量的顺序从数据行中逐个输入数据,直到遇到分隔符结束一个变量的输入,然后接着输入下一个变量。列表输入时,INPUT语句所采用的语句格式为:,3、列表输入,INPUT 变量名 ;,其中,变量名的顺序不可随意更改,必须与数据行中数据的顺序相吻合。输入格式为可选项,用来改变系统默认的数据输入格式,例如输入宽度、小数位数等。选项表示一个数据行只能读入
12、一个观测,表示一个数据行可以读入多个观测。,三、数据输入,格式化输入类似于按列输入,对于列形式固定的数据,可采用格式化输入的方法。但是又与按列输入不同,格式化输入通过INPUT语句使用格式控制和指针控制,可以实现对非标准数据的输入。格式化输入时,INPUT语句所采用的语句格式为:,4、格式化输入,INPUT 指针控制 变量名 输入格式;,其中,指针控制为可选项,用来调整输入位置,其的形式为:n或+n。n指示指针的绝对位置,表示从第n列开始输入;+n则指示指针的相对位置,表示增加n列后开始输入。输入格式一项用来表明该变量的输入格式。,三、数据输入,如果数据行中含有变量的名称,然后紧跟着等号和变量
13、值,则可采用命名方式输入数据。命名方式输入时,INPUT语句所采用的语句格式为:,5、命名方式输入,INPUT 变量名=输入格式 ; INPUT 变量名=起始列数;,命名方式输入的数据形式并不常见。,四、数据输出,直接使用PUT语句,可将数据输出到日志窗口。另外,PUT语句和FILE语句联合使用,可以将数据指定输出到日志窗口或输出窗口。FILE语句的格式为:,1、输出到SAS窗口,FILE 标识名 ;,标识名的可选项为:LOG和PRINT。若标识名为LOG,表示日志窗口,此时PUT语句将结果输出到日志窗口;若标识名为PRINT,表示输出窗口,此时PUT语句将结果打印到输出窗口。,四、数据输出,
14、联合使用PUT语句和FILE语句,可以实现将数据输出到外部文件。其中,FILE语句用于定义要输出外部文件,其语句格式为:,2、输出到外部文件,FILE 文件路径 ;,文件路径包括完整的路径和文件名。选项用来控制输出数据如何被写入到输出文件中。 PUT语句用于实现数据输出,跟INPUT语句的格式类似,但功能正好相反。PUT语句通过采用不同语句格式可以将数据按不同的形式输出,基本的输出形式有:按列输出、列表输出和格式化输出。,五、输入和输出格式,输入输出格式的一般形式为:,1、输入和输出格式的一般形式, 格式名 . ,$为可选项,加上此符号表明是字符型变量的输入输出格式,否则为数值型变量的输入输出
15、格式。 格式名为SAS规定的某种形式的输入格式或输出格式,格式名缺省则为标准的输入输出格式。 w规定格式的输入输出宽度,指字符位数(半角状态的一个英文字符或数字占一位,一个中文字符占两位)。注意区别变量的输入输出宽度与变量的长度。 d 规定数值型输入输出格式中保留的小数位数。 (.)作为输入输出格式的一部分紧跟在输入输出宽度之后,不可省略。,五、输入和输出格式,输入格式一般使用在INPUT语句和INFORMAT语句中,用来规定系统读入数据的形式。如果输入格式设置不正确,则会出现读入数据不完整、读入错误甚至无法读入的情况。 输出格式一般使用在PUT语句和FORMAT语句中,用来规定数据的呈现形式
16、,但是输出格式不论怎样设置都不会改变数据的存储值。,1、输入和输出格式的一般形式,五、输入和输出格式,(1)$w.输入输出格式 最常用的字符型变量的输入输出格式,表示输入或输出宽度为w位的标准字符。当不指定字符型变量的输入输出格式时,系统默认的格式为$w.,w的缺省值为变量长度(若未指定变量长度,则为8)。当$w.作为输入格式时,自动删除字符前面的空格(但是仍记在宽度当中),并把单独的点(.)转换为空格,认为是缺失值。 (2)$CHARw.输入输出格式 表示输入或输出宽度为w位的标准字符。但是与$w.不同,$CHARw.作为输入格式时,不会删除字符前面的空格,也不把单独的点(.)转换为空格。,
17、2、字符型变量的输入输出格式,五、输入和输出格式,(1)w.d输入输出格式 最常用的数值型变量的输入输出格式,它表示输入或输出宽度为w位、小数位数为d位的标准数值,w的缺省值为12。注意:宽度w包含数值的正负号和小数点在内。 (2)BESTw.输出格式 系统默认的输出格式,表示在规定的宽度下选择最精确有效形式的输出标准数值,w的缺省值为12。 (3)Ew.输入输出格式 表示输入或输出科学记数法表示的数值。其中,宽度w包含正负号、小数点以及字符E在内。,2、数值型变量的输入输出格式,五、输入和输出格式,(4)COMMAw.d输入格式 此格式用来读入包含特殊字符的数值,识别包括逗号(,)、美元符号
18、($)、空格、短横线(-)和百分号(%)在内的字符,并在读取数据时自动将这些符号去除,只保留数字和小数点。其中,w表示读入数据的宽度,包括数字、小数点和所有的字符在内,d表示小数位数。 (5)COMMAw.d输出格式 此格式用来输出含有逗号的数值,小数部分不超过d位,整数部分从右向左每三位用逗号隔开,全部字符数不超过w。 (6)DOLLARw.d输出格式 此格式用来输出含有逗号和美元符号($)的数值。,2、数值型变量的输入输出格式,五、输入和输出格式,4、日期时间的输入输出格式,五、输入和输出格式,4、日期时间的输入输出格式,五、输入和输出格式,5、设定变量的输入输出格式,使用INFORMAT
19、语句和FORMAT语句,通过设定变量的属性输入格式和输出格式,也可以实现控制输入输出的目的。 INFORMAT语句用来设定变量的输入格式,它的语句格式为:,INFORMAT 变量名 ;,FORMAT语句用来设定变量的输出格式,它的语句格式为:,FORMAT 变量名 ;,六、数据集的操作,1、SET语句,SET语句是数据集操作中的一个基本语句,用于从一个或多个已经存在的数据集中读取观测数据,生成新的数据集。SET语句的基本语句格式为:,SET 数据集名 ;,在SET语句中,数据集名可以有一个或多个。如果数据集名只有一个,则直接从该数据集中继承数据;如果数据集名有多个,则应考虑采用何种方式将这些数
20、据集拼接起来。,六、数据集的操作,1、SET语句,在SET语句中,每个数据集名后的选项用来规定在读入该数据集时对变量和观测进行的操作。如果不设置选项,则读入数据集中的所有变量和所有观测。,六、数据集的操作,2、BY语句,在数据步中,BY语句的作用是规定分组变量,经常与SET语句、MERGE语句、UPDATE语句和MODIFY语句等联合使用,来对数据集的各种操作进行控制,其语句格式为:,BY 变量名;,在BY语句中,变量名可以有一个或多个,为指定的分组变量。选项Descending表示数据集中的观测是按照分组变量的降序排列的。如果不加选项,则默认为数据集中的观测是按照分组变量升序排列的。,六、数
21、据集的操作,3、数据集的串接,数据集的串接是指将多个数据集纵向合并起来,即增加观测数。,DATA 新数据集名; SET 数据集名1 数据集名2 ; RUN;,在每个数据集名后可附加选项来规定在读入该数据集时对变量和观测进行的选择、删除等操作。新生成的数据集将按照SET语句中数据集名的顺序读入每个数据集,并将包括所有数据集中的变量。如果原来某个数据集中没有此变量,则认为是缺失值。,(1)简单串接 简单串接就是将所有要合并的数据集简单地叠放在一起。我们通过SET语句来实现简单串接,数据步的一般形式如下:,六、数据集的操作,3、数据集的串接,DATA 新数据集名; SET 数据集名1 数据集名2 ;
22、 BY 变量名; RUN;,BY语句用于指定分组变量,使得在串接后的数据集中观测数据按此变量升序排列。注意:使用BY语句前,各串接数据集中的观测也必须按分组变量升序排列。如果按降序排列,则须在BY语句中的变量名前加上选项Descending。,(2)排序串接 如果需要各数据集中的观测按照一定的顺序进行串接,除了使用SET语句外还要用到BY语句。此时,数据步的一般形式为:,六、数据集的操作,4、数据集的并接,MERGE 数据集名1 数据集名2 ;,在MERGE语句中,至少要有两个数据集。每个数据集后的选项用来规定在读入该数据集时对变量和观测进行的操作,其选项与SET语句相同,见2.6.1节中的表
23、2-25。如果不设置选项,则读入数据集中的所有变量和所有观测。,在进行数据集并接时,要用到MERGE语句。MERGE语句的作用是将多个数据集中的观测合并为一个观测,其语句格式为:,数据集的并接是指将多个数据集横向合并起来,即增加变量数。,六、数据集的操作,4、数据集的并接,DATA 新数据集名; MERGE 数据集名1 数据集名2 ; RUN;,在新生成的数据集中,观测总数为各数据集中观测个数的最大值。在合并时,如果某个数据集已没有观测,则认为是缺失值。如果各数据集中有共同的变量,则合并后新生成的数据集中只出现一个变量,其值为MERGE语句中最后一个含有该变量的数据集的观测值。,(1)简单并接
24、 简单并接是将要合并数据集中的观测逐个并接起来,即将一个数据集中的第一个观测与另外一个数据集中的第一个观测合并,第二个观测与另一个数据集中的第二个观测合并,依次这样进行下去。我们通过MERGE语句实现简单并接,数据步的一般形式为:,六、数据集的操作,4、数据集的并接,DATA 新数据集名; MERGE 数据集名1 数据集名2 ; BY 变量名; RUN;,在新生成的数据集中,按照分组变量的值进行对原各数据集中的观测进行匹配并接。如果有多个匹配的,则对所有的组合进行拼接。如果不匹配,则认为是缺失值。,(2)匹配并接 匹配并接是把两个或两个以上的数据集按照某些变量的值进行并接,通过联合使用MERG
25、E语句和BY语句来实现。为了进行匹配并接,各数据中必须至少有一个共同变量,而且都必须按照这些变量排序。使用匹配并接时,数据步的一般形式为:,七、变量的控制,1、设定变量的长度,变量的长度指变量在SAS系统中的存储长度。 通过LENGTH语句可以规定变量的长度,其语句格式为:,LENGTH 变量名 n;,其中,美元符号($)为可选项,加上此符号表示改变字符型变量的长度。n为要指定的变量长度,对于数值型变量可取值为2-8,对于字符型变量可取值为1-32767。,七、变量的控制,2、对变量加标签,标签是对变量名称的描述。它可以不受变量名称的命名规则所限制,对变量进行进一步的解释说明。标签中可以使用中
26、文字符,还可以被打印输出。 LABEL语句用来对变量加标签,其语句格式为:,LENGTH 变量名 n;,其中,引号中为该变量要加的标签。通过LABEL语句,可以对变量规定可以长达256个字节的标签。一个LABEL语句对一个或多个变量加标签。,七、变量的控制,3、对变量重命名,RENAME语句用来对更改数据集中变量的名称,其语句格式为:,RENAME 原变量名=新变量名;,其中,原变量名是数据集中变量本来的名称,新变量名是要赋予的新名称。一个RENAME语句可以对一个或多个变量重命名。 在新建数据集或是进行数据集的继承、串接或是拼接时,RENAME语句等价于在其他语句中的数据集选项RENAME=
27、,其格式为:,数据集名(RENAME=(原变量名=新变量名),七、变量的控制,4、变量的选择和删除,KEEP语句用于对数据集中的变量进行选择保留,其语句格式为:,KEEP 变量名列表;,其中,变量名列表规定数据集中要保留的变量,除此之外的变量将予以删除。 DROP语句用于对数据集中的变量进行删除,其语句格式为:,DROP 变量名列表;,其中,变量名列表规定数据集中要删除的变量,其余变量将予以保留。,八、观测数据的管理,1、观测数据的选择,在进行数据集的继承、串接和并接时,有时只需要其中的一部分观测。这时,我们一般通过WHERE语句来对观测数据进行选择,使系统只读入满足条件的观测。 WHRER语
28、句的格式为:,WHERE 表达式;,其中,表达式为选择观测的条件,由一系列变量、常数和运算符组成(不包括函数)。如果观测满足该表达式,则被系统读入。但是WHERE语句是非执行语句,即本身不执行任何操作,一般要和其他语句连用。WHERE语句只能从SAS数据集的观测中进行选择,而不能从外部文件或程序中的数据行选择观测数据。,八、观测数据的管理,2、观测数据的删除,数据步中采用DELETE语句对观测数据进行删除,其语句格式为:,DELETE;,其中,IF分句用于设置删除条件,如果观测数据满足其后的表达式则由DELETE语句执行删除命令。 DELETE语句不仅可以在读入SAS数据集时删除观测,还可以在
29、读入外部数据文件或程序中的数据行时执行删除命令。,DELETE语句经常使用在IF-THEN语句中,一般形式为:,IF 表达式 THEN DELETE;,八、观测数据的管理,3、观测数据的修改,(1)UPDATE语句 UPDATE语句通过对更新数据集和原数据集的组合来实现对原数据集的修改,组合方式类似于MERGE语句,并且必须要和BY语句联用。采用UPDATE语句时,数据步的一般形式为:,DATA 新数据集名; UPDATE 原数据集名 更新数据集名 ; BY 变量名; RUN;,其中,更新数据集中包含了要对原数据集进行修改的数据值,不需要修改的数据则一般用缺失值表示。BY语句定义的分组变量是原
30、数据集和新数据集共有的变量。,八、观测数据的管理,3、观测数据的修改,(2) MODIFY语句 MODIFY语句是在没有创建备份的情况下,利用更新数据集在原数据集的基础上对其进行修改,一般也要和BY语句联用。采用MODIFY语句时,数据步的一般形式为:,DATA 原数据集名; MODIFY 原数据集名 更新数据集名; BY 变量名; RUN;,其中,更新数据集中包含了要对原数据集进行修改的数据值,不需要修改的数据则一般用缺失值表示。BY语句定义的分组变量是原数据集和新数据集共有的变量。,九、条件语句与循环语句,1、IF语句,IF语句是SAS系统提供的基本条件语句,它有两种类型:简单IF语句和I
31、F-THEN /ELSE语句。,IF 表达式;,其中,表达式由一系列变量、常数和运算符组成。当表达式为真时,则对观测执行数据步的语句;当表达式为假时,则返回数据步开始考虑下一个观测。,(1)简单IF语句 简单IF语句的格式为:,九、条件语句与循环语句,1、IF语句,IF 表达式 THEN 执行语句; ,当IF后面的表达式为真时,则对观测执行THEN后面的语句;当表达式为假时,则执行ELSE后面的语句,如果没有提供ELSE语句,则执行下一个程序语句。,(2)IF-THEN /ELSE语句 IF-THEN /ELSE语句的格式为:,九、条件语句与循环语句,2、SELECT语句,SELECT语句是S
32、AS系统提供的分支结构语句,有两种基本格式:,SELECT后面的表达式可以是简单的变量,也可以是由变量、常数和运算符构成的复杂表达式。每个WHEN后面可以有一个值或多个值,多个值之间要用逗号隔开。如果表达式的值与某个WHEN后面的值相等,则执行相应的语句。如果不等于任何一个WHEN后面的值,则执行OTHERWISE对应的语句。,SELECT(表达式); WHEN(值列表) 执行语句; WHEN(值列表) 执行语句; END;,格式一:,九、条件语句与循环语句,2、SELECT语句,这种格式SELECT后面没有表达式,而是给每个WHEN语句一个表达式,如果表达式为真,则执行相应的语句。如果所有的
33、表达式都不满足,则执行OTHERWISE对应的语句。,SELECT; WHEN(表达式) 执行语句; WHEN(表达式) 执行语句; END;,格式二:,九、条件语句与循环语句,3、DO语句,DO语句规定,从DO开始直到END出现的所有语句作为一个单元被执行,这些语句被称为一个DO组。SAS系统中提供的常用DO语句有:简单DO语句,循环DO语句,DO WHILE语句和DO UNTIL语句。,简单DO语句通常使用在IF-THEN /ELSE语句中,来表明执行的条件。,DO; 一组SAS语句; END;,(1)简单DO语句 简单DO语句的是最基本的DO语句形式,其语句格式为:,九、条件语句与循环语
34、句,3、DO语句,(2)循环DO语句 如果要求DO组中的语句被重复执行,则需要使用循环DO语句,其语句格式为:,其中,指标变量用来控制DO组中语句被执行的次数。初值和终值分别用来规定指标变量的开始值和终止值,可以为数值也可以是产生数值结果的表达式。步长为可选项,如不指定则默认为1。在使用循环DO语句时,DO组中的语句将被反复执行,直到超出初值和终值所包含的范围。,DO 指标变量=初值 TO 终值 ; 一组SAS语句; END;,九、条件语句与循环语句,3、DO语句,(3)DO WHILE语句 DO WHILE语句指定了循环继续的条件,当条件满足时重复执行DO组中的语句,其语句格式为:,其中,表
35、达式为循环继续的条件。在DO组中的语句被执行前,总是先计算该表达式的值,如果表达式为真,则DO组被执行。否则跳出循环,执行DO组后面的语句。,DO WHILE(表达式); 一组SAS语句; END;,九、条件语句与循环语句,3、DO语句,(4)DO UNTIL语句 DO UNTIL语句也是有条件的执行DO组中的语句,但是DO UNTIL语句不同于DO WHILE语句,它给出的是循环结束的条件,其语句格式为:,使用DO UNTIL语句时,DO语句总是先被执行,然后再计算表达式的值。因此,DO组语句至少要被执行一次。如果计算表达式的值为真,则跳出循环继续执行下面的语句。,DO UNTIL(表达式)
36、; 一组SAS语句; END;,九、条件语句与循环语句,4、GO TO语句,GO TO语句用来使SAS系统立即跳到指定的语句,再从那个语句开始执行下面的语句。GO TO语句的一般格式为:,其中,GO TO也可以写作GOTO,用来指定一个标号,然后SAS系统随即跳转到标号的位置,执行标号后面的语句。注意:GO TO语句和标号指示的语句必须在同一个数据步。,GO TO 标号; 标号: SAS语句;,九、条件语句与循环语句,5、LINK语句,LINK语句用来使SAS系统立即跳到一个标号指定的语句,并从那个语句开始执行直到一个RETURN语句。然后再回到LINK语句,接着执行LINK语句后面的语句。L
37、INK语句的格式为:,注意:LINK语句和标号指示的语句必须在同一个数据步。,LINK 标号; 标号: SAS语句; RETURN;,九、条件语句与循环语句,6、CONTINUE语句,CONTINUE语句用于停止DO循环中的当前这次循环过程,并继续进行下一次循环,其语句格式为:,CONTINUE语句一般和IF-THEN语句联用,根据某个条件来停止当前这次循环,进而转入下一次循环。,CONTINUE;,九、条件语句与循环语句,7、LEAVE语句,LEAVE语句停止当前的循环DO语句或SELECT语句,并继续执行它们后面的其他语句,其语句格式为:,LEAVE语句也常和IF-THEN语句联用,根据某
38、个条件来停止当前DO语句或SELECT语句,进而执行后面的语句。,LEAVE;,十、过程步介绍,1、过程步语句,数据步只是完成对数据的输入以及数据的初步处理,要进行更多更深入的数据处理和统计分析,则需要在过程步才能实现。,其中,PROC语句用来规定要运行的SAS过程和要分析的数据集。SAS过程是已经写好的SAS程序,用来实现特定的功能。在以后的各章,我们将详细地介绍各种常用的SAS过程及它们实现的统计功能。,PROC 过程名 DATA=数据集名; 过程步语句; 过程步语句; RUN:,过程步的一般形式为:,十、过程步介绍,1、过程步语句,一些基本的过程步语句:,十、过程步介绍,2、PRINT过
39、程,PRINT过程是SAS系统提供的专门的输出过程,用来打印展现数据集。 PRINT过程的语句格式为:,PROC PRINT DATA=数据集名 ; VAR 变量名列表; ID 变量名列表; SUM 变量名列表; BY变量名列表; PAGEBY BY-变量; SUMBY BY-变量; RUN;,十、过程步介绍,2、PRINT过程,语句说明:,(1)PROC语句规定开始运行PRINT过程并指定要打印的数据集名。 (2)VAR语句规定要输出的变量及其顺序。在不使用VAR语句时,默认将所有的变量按照它们在数据集中的顺序输出。 (3)ID语句规定一些变量来代替观测序号,置于输出列表的最左侧。 (4)S
40、UM语句规定计算并输出数值变量的总和。 (5)BY语句规定按BY分组输出列表,它还有两个分语句供使用:PAGEBY语句和SUMBY语句。,十、过程步介绍,3、SORT过程,SAS中有很多和BY语句配合使用的语句,在使用之前都要对数据集进行排序。我们一般通过SORT过程对数据集实现重新排序。SORT过程的语句格式为:,PROC SORT DATA=数据集名 ; BY 变量名; RUN;,语句说明: (1)PROC语句规定开始运行SORT过程并指定要排序的数据集名。 (2)在SORT过程中必须使用BY语句,用来规定排序的变量。选项DESCENDING放在某变量名的前面,规定按照该变量的降序排列。不
41、使用该选项,则默认按照变量的升序排列。,十、过程步介绍,4、TRANSPOSE过程,SAS系统中提供了TRANSPOSE过程来实现对数据集的转置。TRANSPOSE过程的语句格式为:,PROC TRANSPOSE DATA=数据集名 ; VAR 变量名列表; ID 变量名; IDLABEL 变量名; COPY 变量名列表; BY 变量名列表; RUN;,十、过程步介绍,2、PRINT过程,语句说明:,(1)PROC语句规定开始运行TRANSPOSE过程并指定要转置的数据集名。 (2)VAR语句规定原数据集中要转置的变量。如果不使用该语句,则只转置数值型变量,而不转置字符型变量。 (3)ID语句规定原数据集中的一个变量,该变量的值为转置后数据集中的变量名。 (4)IDLABEL语句用来规定一个变量为转置后的数据集提供标签。 (5)COPY语句对列出的变量不进行转置而直接复制到输出数据集中。 (6)BY语句规定对每个BY分组内的数据进行转置,但是BY变量不进行转置而直接复制到输出数据集中。,4、TRANSPOSE过程,
链接地址:https://www.31doc.com/p-2576960.html