SAS little book学习心得(资格考试必备)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“alittlesasbook”。
第一章
1、每一个SAS语句都由一个分号结尾
2、SAS语句不区分大小写。
一条语句可以持续到第二行(只要不把一个单词分开)。
几条语句可以用一行。
可以在任何一列中开始一条语句
3、SAS数据集也被叫做表、观测值也被叫做行、变量也被叫做列。
4、在SAS中只有两种数据类型——数值型和字符型。
5、字符变量的缺失值用空格表示,数值变量的缺失值用句号(.)表示。
6、SAS命名规则: 名字的长度要小于等于32个字节。(一个字母1个字节,一个汉字2个字节)以字母或下划线开头。
可以包含字母、数字、或者是下划线,不能是%$!*@。可以是小写或大写字母,且不区分大小写。
7、程序的结束:当程序遭遇DATAPROC等标志着新程序开始的语句时,程序结束。如果运行的是批处理,则run代表语句的结束。
8、数据步按照一行一行、一个观测值一个观测值的顺序执行
9、OPTIONS语句既不属于数据步也不属于过程步。
10、导入数据
filename mydata ‘E:president.txt’;data uspresidents;
infile mydata;input name $ party $ number;run;
data uspresidents;infile 'E:president.txt';input name $ 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-hold specifiers),不同地方在于停留多久,@能使SAS停留到下一个input语句(也不换行),@@能使停留的时间到下一个data步(也不换行)。
3、用infile语句中的选项控制输入
3.1 FIRSTOBS=
选项告诉SAS从哪一行开始读取数据 3.2 OBS=
告诉SAS一直读取到哪一行位置 3.3 MISSOVER
在input语句中输入的几个变量,SAS在观测值中就读取几个变量,如果一行未读完,则进入下一行直到输入的变量都读取了变量值。miover可以让SAS不进入下一行读取,未赋值的变量就使其成为缺失值。3.4 Truncover
当每行的长度不一时,指定最长的列读取观测值,使得当读取短行的观测值时不会跳到下一行读取;
4、用数据步读取分隔符文件
4.1 DLM=
指定空格以外的其他分隔符。如果是用制表符隔开的,那么可以使用DLM=’09’X来指定。4.2DSD
1.忽略引号中数据的分隔符,例如一个观测Joseph,76,“Red Racers, Washington”非引号中的逗号能识别成分隔符,而引号中的逗号不能识别; 2.自动将字符串中的引号去掉;
3.将两个相邻的分隔符当作缺失值来处理。(并且,DSD默认分隔符为逗号,如果数据中的分隔符不是逗号,那么要用DLM来指定)
5、用导入过程(IMPORT procedure)读取分隔符文件
如果文件没有正确的扩展名,或者是DLM格式的,必须在proc import语句中用DBMS=option。如果想要创建的数据集名字已经存在,那么要用replace选项代替。用LIBNAME语句使用永久数据集
6、LIBNAME语句
基本形式为:LIBNAME + 库名+ ‘路径’ ;
7.查看SAS数据集的描述
Proc contents data=data-set
第三章
1、表达式创建新变量
2、使用SAS函数
DAY():返回一个月中的天数;upcase():将字母改为大写字母。
3、使用IF-THEN语句
3.1基本形式为:IF 条件 THEN 执行;3.2
3.3.可以用AND和OR来定义多个条件:IF Model='Mustang' AND Year
3.4用IF-THEN语句将观测值分组
3.5构造子集
这两句话是等价的:IF Sex='f';IF Sex='m' THEN DELETE;
4、处理SAS的日期数据
SAS处理日期数据的三个工具为:读取数据的informats,使用数据的函数(functions),打印数据的formats。
Formats打印日期数据时,还需要将数值换成日期 FORMAT BirthDate WORDATE18.;
5、使用retain和sum语句
6、创建数组 6.1格式
ARRAY store(4)Macys Penneys Sears Target;store(1)是Macys,store(2)是Penneys,store(3)是Sears,store(4)是Target。(变量可以是已存在的,也可以是新创建的)6.2方便对同类型的变量进行处理
7、列出变量名的快捷方式
第四章
1、BY语句
BY语句只在过程proc sort中是必须的,它用来对观测值排序。其他过程都假设了数据已经进行了排序,所以如果数据还没有排序,那么在分析之前要用proc sort排序。TITLE 和FOOTNOTE语句 为输出加上标题和脚注 Label语句
为输出的变量加上标签
在数据步中使用label语句,则标签会保存在数据集中;在过程步中使用,标签只在这个过程中有效。
2、用where语句在过程中构造子集
不会创建新的数据集
3、用proc sort为数据排序
选项nodupkey告诉SAS排序时删除重复值 PROC SORT DATA=mey OUT=neat NODUPKEY;将DESCENDING加在要降序的变量前面 BY State DESCENDING City;
4、用proc print打印你的数据 4.1 NOOBS选项与LABEL选项
SAS默认打印观测值数,noobs选项可以取消。SAS默认打印时用变量标签代替变量,用label可以改变取消:
PROC PRINT DATA=data-set NOOBS LABEL;4.2其他选项
BY variable-list;前提是数据必须进行排序 ID variable-list;指定观测变量 SUM variable-list;打印变量总数
VAR variable-list;指定打印哪部分变量以及打印顺序,默认打印全部。
5、用formats改变打印外观
Format可以用在数据步和过程步中,前者将把格式永久储存,后者只是临时储存。
6、使用proc format创建自己的格式
第五章
1、ODS 1.1、ODS TRACE语句:告诉SAS打印出SAS日志中输出对象的信息。
ODS select语句:知道输出对象的名字之后,选择需要的输出对象。
ODS OUTPUT语句:有选择地创建新的数据集。
提醒: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)
指定颜色、TITLE COLOR=BLACK 'Black' COLOR=GRAY 'Gray' COLOR=LTGRAY 'Light Gray';背景颜色、TITLE BCOLOR='#C0C0C0' 'This Title Has a Gray Background';高度、TITLE HEIGHT=12pt 'Small' HEIGHT=.25in 'Medium' HEIGHT=1cm 'Large';对齐方式、TITLE JUSTIFY=LEFT 'Left' JUSTIFY=CENTER 'vs.' JUSTIFY=RIGHT 'Right';字体、TITLE 'Default' FONT=Arial'Arial' FONT='Times New Roman' 'Times New Roman' FONT=Courier'Courier' 加粗与斜体
TITLE FONT=Courier'Courier' BOLD'Bold'BOLD ITALIC'Bold and Italic';
3、改变输出表格的背景(style)
3.1改变数据单元的背景颜色:
3.2增加VAR语句,将record列的字体改为斜体和粗体:
4、用style=option定制proc report输出
4.1基本格式
注意:Define name/group;表示name变量不用sum。4.2改变数据单元的背景颜色和对齐方式
4.3只改变name这一列
5、使用style=option定制proc tabulate(表格)输出
5.1制表基本格式
5.2将数据单元的数据居中,并将背景设置为白色
改变数据单元:
PROC TABULATE DATA=mysales STYLE={BACKGROUND=yellow};改变行或列: TABLE City,Month ALL*{STYLE={BACKGROUND=red}};
6、按条件改变某列值的颜色
用到format语句,相当于自定义改变颜色的条件。
第六章
1、SET语句
1.1使用SET语句修改数据集
基本形式为:
DATA new-data-set;SET data-set;
取子集:sales中变量day=’F’的观测,并新增变量:total。1.2使用set语句堆叠数据 基本形式为:
DATA new-data-set;SET data-set-1 data-set-n;
适用于有相同变量的两个数据集。
1.3、使用SET语句插入数据集
基本格式:
DATA new-data-set;SET data-set-1 data-set-n;BY variable-list;
2、merge语句。匹配合并数据集
2.1一对一匹配合并数据集
DATA new-data-set;
MERGE data-set-1 data-set-2;BY variable-list;两个数据集的必须得先按主键排序。
注意:如果两个数据集有重叠的变量——除了BY变量,那么第二个数据集中的此变量会覆盖第一个数据集中的。
2.2一对多匹配合并数据
一对多的一要放在前面。
2.3合并统计量与原始数据
2.4合并total和原始数据
DATA new-data-set;
IF _N_=1 THEN SET summary-data-set;SET original-data-set;
适用于没有匹配变量的情况下,将一个单个观测值合并到多个观测值中。
3、update语句 基本格式:
DATA master-data-set;
UPDATE master-data-set transaction-data-set;BY variable-list;(匹配变量的变量值有唯一性;
交易数据的缺失值不会改写主数据中存在的值)
4、使用SAS数据集选项
用法:接在数据集名之后,用括号括起来
KEEP=variable-list
告诉SAS保留哪个变量 DROP=variable-list
告诉SAS丢弃哪个变量 RENAME=(oldvar=newvar)
重命名某个变量
FIRSTOBS=n
从观测值n开始读取变量 OBS=n
到观测值n停止读取 IN=new-var-name 选择并重命名变量 :
用observation number选择观测值 :
用in=option追踪并选择观测值:
创建的变量是临时的,只存在于数据步期间。若新变量存在一个数据集中则赋为1,不存在则赋为0.(用于—SET,MERGE,或者UPDATE—)
使用output语句写多维数据集
IF family='Ursidae' THEN OUTPUT bears;
IF family='Ursidae' THEN OUTPUT bears;(如果遗漏了数据集名,则将被写入数据步中所有的数据集中去)
使用output将一个观测值变成多个观测值
SAS通常在数据步结尾将一个观测值写入数据中,output放入循环中,每循环一次就输出一个观测。
使用proc transpose将观测值转变为变量
PROC TRANSPOSE DATA=old-data-set OUT=new-data-set;BY variable-list;(保持不变的变量)ID variable;(要变为变量的观测值)VAR variable-list;(要变为观测的变量)
使用SAS自动变量
_N_:记录了SAS在数据步中循环的次数
_ERROR_:如果一个观测值的数据出现错误,_ERROR_会被赋值为1,否则赋值为0 FIRST.variable和LAST.variable:当使用BY语句时,这两个变量才有效。SAS处理一个观测值时,如果某个变量的新变量值是第一次出现,first.variable被赋值为1,其他观测值中被赋为0。LAST.variable是同理的某变量的变量值是最后一次出现时,赋为1,其他赋为0。
第七章
定义宏变量:
格式:
%LET
宏变量名=值; 如:
%let
dsn=sasuser.cla;
第八章
用PROC UNIVARIATE检验数据分布 用proc means产生统计量 用proc freq检验分类数据
用proc corr检测相关性
使用proc reg做简单的回归分析
PROC REG LINEPRINTER;MODEL dependent=independent;PLOT dependent*independent='symbol'P.*independent='symbol'/ OVERLAY;
读取proc reg的输出
使用proc anova做单因素方差分析 读取proc anova的输出
SQL部分
PROC SQL;SELECT语句:
SELECT(DISTINCT:只显示查询结果中不重复的数据)FROM [WHERE ] 过滤条件:用于过滤查询的数据。格式:别名.字段表达式=值
连接条件:用于建立两个表间的关系。别名1.字段表达式1=别名2.字段表达式2
[GROUP BY][HAVING ]] HAVING:将统计结果作为查询过滤条件 [ORDER BY ] [ASC | DESC]…] 嵌套查询
where 'NA' in(select jobcat from airline.superv where idnum=supid)多表查询
1.用WHERE子句设置联接条件 在FROM子句中列出要查询的多个表 在WHERE子句中加入联接条件
[].=[].2.from airline.march as m left join airline.delay as d on m.date=d.date and m.flight=d.flight
宏变量部分
1、定义宏变量: %let 宏变量名=值;
1.1、宏的定义
%macro 宏变量名;
...文本;
%mend [宏变量名];
1.2、宏的调用
%宏变量名;
1.3、定义带参数的宏
%macro 宏变量名(参数1,参数2,...)
1.4、引用带参数的宏
%变量名(参数1,参数2,....)
2、引用宏变量: &a(在带有引号的文本中引用宏变量时,需要将这个文本字符串用双引号括起来。)
2.1多次引用宏(宏嵌套):
必须使用%str()函数围住宏变量的值,以后用&d来引用此段程序。
3、显示宏变量
%put &a +(分隔符(一般用句号.))+ 其他文本
4、宏内调用宏
%macro create;
子宏一
data temp;
set mr.&dat;
if year(date)=&year then output;run;%mend;
%macro plot;
子宏二
proc gplot data=temp;
title2 “&year &pr timeseries”;
plot &price*date=1;
run;%mend;
%macro analyze(dat,year,pr,price);
主宏(参数用于代替子宏中的对应参数)%create;%plot;%mend;%analyze(a000001,1994,开盘价,oppr);%analyze(a000001,1995,收盘价,clpr);
5、宏do循环语句 5.1计数型循环
%do 循环变量=初值 %to 终值 [%by 步长]; 循环体; %end; 5.2当型循环 %macro mac2;%let i=0;%do %while(&i
6、条件判断语句
%if 表达式 %then 语句1; %else 语句2;
7、宏与数据步的信息交换 data a;input n;cards;10;run;%macro what;data _null_;set a;call symput('then',n);(将数据步中的变量n传递给了宏变量then)run;footnote “共&then.个结果”;(不能漏了句号)%mend;
8、