SAS教程【Base SAS软件】:[2]SAS编程基础
SAS语言的编程规则跤耧锿葡与其它过程语言基本相同。
SAS语句
一个SAS语句是有SAS关键词、SAS名字、特殊字符和运算符组成的字符串,并以分
号(;)结尾。
注释语句的形式为:/*注释内容*/或*注释内容。
SAS程序
一序列SAS语句组成一个SAS程序。SAS程序中的语句可分为两类步骤:DATA步和PROC步。这两类步骤是所有SAS程序的模块。通常用DATA步产生SAS数据集,而用PROC步对SAS数据集内的数据进行分析处理并输出结果。
SAS数据集
SAS数据集相当于其它数据库系统的表(Table);每一行称为一个观测,相当于其它数
据库系统的一条记录;每一列称为一个变量。
SAS的变量只有两种类型:数值型和字符型;变量的长度缺省时为8个字节,用关键字LENGTH定义变量长度;可以对变量的输入、输出格式进行定义,用关键字INFORMAT、FORMAT来分别定义;还可以给变量加标签,标签是一个代替变量名的描述性标识,可以在一些确定的SAS过程中代替变量名被打印出来,用关键字LABEL定义。
SAS表达式和SAS函数
SAS语言的表达式与其它过程语言略有不同。
SAS语言中数值型变量的缺失值是一个小数点(.),字符型变量的缺失值是空(′′)。
在一个四则运算的表达式里面,如果有一个缺失值,那么整个运算的结果就是’.’;如果用户不想让缺失值参加算术运算,可使用SAS的样本统计函数,如SUM(),MEAN()等。如果除法运算的除数为0,那么运算的结果也是’.’。
表示时间的变量在数据集里经常被定义为数值型,0代表的是1960年1月1日,1代表
的是1960年1月2日,-1代表的是1959年12月31日,以此类推。我们可以用FORMAT定义时间的输出格式,如:yymmdd10.这种格式显示的时间形式如’2001-05-01’。时间常数可以表示成'01MAY2001'd的形式,如:ifoccdate=’01MAY2001’d。
算符’| |’连接两个字符值,连接算付不清里开头和结尾的空格,如:如果itemid=’622’,itemname=’逾期贷款’,那么itemid | |‘.’| | itemname=’ 622.逾期贷款’。如果要去掉空格,就要使用SAS函数TRIM和LEFT,trim(left(itemid))| | ‘.’| | trim(left(itemname))=’622.逾期贷款’。
常用的函数:
字符函数:
TRIM(s):去掉s尾部空格;
LEFT(s):字符串s的表示式采用左对齐,即去掉s开头的空格;
SUBSTR(s,p,n):从字符串s中的第p个字符开始抽取n个字符的子串。
LENGTH(s):给出字符串s的长度;
INDEX(s,s1):搜寻字符串s1在字符串s中的位置;
INPUT(s,informat):
字符s的输入格式为informat,如:INPUT(‘1960-01-01’,yymmdd10.)=0;
PUT(s,format):
将s按format的格式输出,如:PUT(0,yymmdd10.)=’1960-01-01’,结果一定为字符型;
SYMPUT(‘x1’,x2):把x2的值赋给宏变量x1
SYMGET(‘x’):取得宏变量x的值;
时间和日期函数:
DATE( ):取当前日期;
DATETIME( ):取当前日期和时间;
YEAR(date)、MONTH(date)、QTR(date)、DAY(date):
分别取date表示的年、季度、月份、日。
INTX(in,from,nu):
按给定的时间间隔in—年(year)、季度(qtr)、月份(month)、日(day),从日期from,推算出nu个时间间隔后的日期的第一天。