第一章1、每一个SAS语句都由一个分号结尾2、SAS语句不区分大小写。一条语句可以持续到第二行(只要不把一个单词分开)。几条语句可以用一行。可以在任何一列中开始一条语句3、SAS数据集也被叫做表、观测值也被叫做行、变量也被叫做列。4、在SAS中只有两种数据类型——数值型和字符型。5、字符变量的缺失值用空格表示,数值变量的缺失值用句号(.)表示。6、SAS命名规则:名字的长度要小于等于32个字节。(一个字母1个字节,一个汉字2个字节)以字母或下划线开头。可以包含字母、数字、或者是下划线,不能是%$!*@。可以是小写或大写字母,且不区分大小写。7、程序的结束:当程序遭遇DATA\PROC等标志着新程序开始的语句时,程序结束。如果运行的是批处理,则run代表语句的结束。8、数据步按照一行一行、一个观测值一个观测值的顺序执行9、OPTIONS语句既不属于数据步也不属于过程步。10、导入数据filenamemydata‘E:\president.txt’;datauspresidents;infilemydata;inputname$party$number;run;datauspresidents;infile'E:\president.txt';inputname$party$number;run;第二章1、INFILE语句告诉SAS外部数据的文件名和存放路径,它在data语句之后,在INPUT语句之前。2、Input语句2.1input最基本用法读取空格分开的原始数据:你必须读取所有的数据记录,不能跳过某些值、缺失值必须用句号“.”代替。字符串数据不能包含空格、长度不能超过8个字符。2.2读取变量名中含空格的读取按固定列排列的原始数据:input关键字后接变量名、再接变量的列位置。2.3.informats读取非标准格式的原始数据$代表是字符串、informats代表形式(比如日期的MMDDYY)、w是宽度、d是小数点的位数、最后是句号“.”,缺少句号会使得SAS把形式(如MMDDYY)当做变量名2.4:遇到空格继续读取或不继续读取定义为$length,在该长度中,空格也算在内。如果要使SAS读取过程中遇到空格则不再继续读取,则要在$length.前面加冒号“:”。2.5从某个地方开始读取@’[’作为列指示器,告诉SAS读取[之后的内容。2.6跨行观测值的读取方式行指示器,斜线/:告诉SAS跳至原始数据的第二行;#n:跳至第n行,n代表原始数据中某观测值的行数(#2则让SAS跳至某观测值的第二行)。2.7一行读取多个观测值可以在input语句结尾加一个停止符号@@。2.8按条件读取部分观测值在input语句结尾加符号@,这告诉SAS先停在(hold)此行,同时用IF语句检测此观测值是否满足需要,如果是,那么可以再用一个input语句来读取现有的变量。。2.9、@vs@@@的作用类似于@@,都是行停留指示符(line-holdspecifiers),不同地方在于停留多久,@能使SAS停留到下一个input语句(也不换行),@@能使停留的时间到下一个data步(也不换行)。3、用infile语句中的选项控制输入3.1FIRSTOBS=选项告诉SAS从哪一行开始读取数据3.2OBS=告诉SAS一直读取到哪一行位置3.3MISSOVER在input语句中输入的几个变量,SAS在观测值中就读取几个变量,如果一行未读完,则进入下一行直到输入的变量都读取了变量值。missover可以让SAS不进入下一行读取,未赋值的变量就使其成为缺失值。3.4Truncover当每行的长度不一时,指定最长的列读取观测值,使得当读取短行的观测值时不会跳到下一行读取;4、用数据步读取分隔符文件4.1DLM=指定空格以外的其他分隔符。如果是用制表符隔开的,那么可以使用DLM=’09’X来指定。4.2DSD1.忽略引号中数据的分隔符,例如一个观测Joseph,76,RedRacers,Washington非引号中的逗号能识别成分隔符,而引号中的逗号不能识别;2.自动将字符串中的引号去掉;3.将两个相邻的分隔符当作缺失值来处理。(并且,DSD默认分隔符为逗号,如果数据中的分隔符不是逗号,那么要用DLM来指定)5、用导入过程(IMPORTprocedure)读取分隔符文件如果文件没有正确的扩展名,或者是DLM格式的,必须在procimport语句中用DBMS=option。如果想要创建的数据集名字已经存在,那么要用replace选项代替。用LIBNAME语句使用永久数据集6、LIBNAME语句基本形式为:LIBNAME+库名+‘路径’;7.查看SAS数据集的描述Proccontentsdata=data-set第三章1、表达式创建新变量2、使用SAS函数DAY():返回一个月中的天数;upcase():将字母改为大写字母。3、使用IF-THEN语句3.1基本形式为:IF条件THEN执行;3.23.3.可以用AND和OR来定义多个条件:IFModel='Mustang'ANDYear1975THENStatus='classic';3.4用IF-THEN语句将观测值分组3.5构造子集这两句话是等价的:IFSex='f';IFSex='m'THENDELETE;4、处理SAS的日期数据SAS处理日期数据的三个工具为:读取数据的informats,使用数据的函数(functions),打印数据的formats。Formats打印日期数据时,还需要将数值换成日期FORMATBirthDateWORDATE18.;5、使用retain和sum语句6、创建数组6.1格式ARRAYstore(4)MacysPenneysSearsTarget;store(1)是Macys,store(2)是Penneys,store(3)是Sears,store(4)是Target。(变量可以是已存在的,也可以是新创建的)6.2方便对同类型的变量进行处理7、列出变量名的快捷方式第四章1、BY语句BY语句只在过程procsort中是必须的,它用来对观测值排序。其他过程都假设了数据已经进行了排序,所以如果数据还没有排序,那么在分析之前要用procsort排序。TITLE和FOOTNOTE语句为输出加上标题和脚注Label语句为输出的变量加上标签在数据步中使用label语句,则标签会保存在数据集中;在过程步中使用,标签只在这个过程中有效。2、用where语句在过程中构造子集不会创建新的数据集3、用procsort为数据排序选项nodupkey告诉SAS排序时删除重复值PROCSORTDATA=messyOUT=neatNODUPKEY;将DESCENDING加在要降序的变量前面BYStateDESCENDINGCity;4、用procprint打印你的数据4.1NOOBS选项与LABEL选项SAS默认打印观测值数,noobs选项可以取消。SAS默认打印时用变量标签代替变量,用label可以改变取消:PROCPRINTDATA=data-setNOOBSLABEL;4.2其他选项BYvariable-list;前提是数据必须进行排序IDvariable-list;指定观测变量SUMvariable-list;打印变量总数VARvariable-list;指定打印哪部分变量以及打印顺序,默认打印全部。5、用formats改变打印外观Format可以用在数据步和过程步中,前者将把格式永久储存,后者只是临时储存。6、使用procformat创建自己的格式第五章1、ODS1.1、ODSTRACE语句:告诉SAS打印出SAS日志中输出对象的信息。ODSselect语句:知道输出对象的名字之后,选择需要的输出对象。ODSOUTPUT语句:有选择地创建新的数据集。提醒:ODS语句不属于数据步也不属于过程步,摆放它的好位置是proc过程步之前,这个过程步的输出正是你希望捕捉的。1.2、使用ODS语句创建HTML输出Contents=文件是一个链接到主体文件的一个目录表,它将会列出输出的每个部分,点击表中某个条目,相关输出会出现。Page=文件类似于contents文件,不同的是,contents通过标签列出输出的每个部分,而page文件通过页码列出。Frame=允许同时访问在不同区域、框架或浏览器窗口中,访问主体文件、contents文件和page文件。Style=这个选项允许指定一个风格模板,默认的模板名为default。1.3、使用ODS语句创建RTF输出在word中输出:在PDF中输出:2、标题和注脚(title、footnote)指定颜色、TITLECOLOR=BLACK'Black'COLOR=GRAY'Gray'COLOR=LTGRAY'LightGray';背景颜色、TITLEBCOLOR='#C0C0C0''ThisTitleHasaGrayBackground';高度、TITLEHEIGHT=12pt'Small'HEIGHT=.25in'Medium'HEIGHT=1cm'Large';对齐方式、TITLEJUSTIFY=LEFT'Left'JUSTIFY=CENTER'vs.'JUSTIFY=RIGHT'Right';字体、TITLE'Default'FONT=Arial'Arial'FONT='TimesNewRoman''TimesNewRoman'FONT=Courier'Courier'加粗与斜体TITLEFONT=Courier'Courier'BOLD'Bold'BOLDITALIC'BoldandItalic';3、改变输出表格的背景(style)3.1改变数据单元的背景颜色:3.2增加VAR语句,将record列的字体改为斜体和粗体:4、用style=option定制procreport输出4.1基本格式注意:Definename/group;表示name变量不用sum。4.2改变数据单元的背景颜色和对齐方式4.3只改变name这一列5、使用style=option定制proctabulate(表格)输出5.1制表基本格式5.2将数据单元的数据居中,并将背景设置为白色改变数据单元:PROCTABULATEDATA=mysalesSTYLE={BACKGROUND=yellow};改变行或列:TABLECity,MonthALL*{STYLE={BACKGROUND=red}};6、按条件改变某列值的颜色用到format语句,相当于自定义改变颜色的条件。第六章1、SET语句1.1使用SET语句修改数据集基本形式为:DATAnew-data-set;SETdata-set;取子集:sales中变量day=’F’的观测,并新增变量:total。1.2使用set语句堆叠数据基本形式为:DATAnew-data-set;SETdata-set-1data-set-n;适用于有相同变量的两个数据集。1.3使用SET语句插入数据集基本格式:DATAnew-data-set;SETdata-set-1data-set-n;BYvariable-list;2、merge语句2.1一对一匹配合并数据集DATAnew-data-set;MERGEdata-set-1data-set-2;BYvariable-list;两个数据集的必须得先按主键排序。注意:如果两个数据集有重叠的变量——除了BY变量,那么第二个数据集中的此变量会覆盖第一个数据集中的。2.2一对多匹配合并数据一对多的一要放在前面。2.3合并统计量与原始数据2.4合并total和原始数据(?)DATAnew-data-set;IF_N_=1THENSETsummary-data-set;SEToriginal-data-set;适用于没有匹配变量的情况下,将一个单个观测值合并到多个观测值中。3、update语句基本格式:DATAmaster-data-set;UPDATEmaster-data-settransaction-