the little sas book学习笔记全部章节.docx

上传人:b****5 文档编号:7502982 上传时间:2023-01-24 格式:DOCX 页数:25 大小:729.97KB
下载 相关 举报
the little sas book学习笔记全部章节.docx_第1页
第1页 / 共25页
the little sas book学习笔记全部章节.docx_第2页
第2页 / 共25页
the little sas book学习笔记全部章节.docx_第3页
第3页 / 共25页
the little sas book学习笔记全部章节.docx_第4页
第4页 / 共25页
the little sas book学习笔记全部章节.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

the little sas book学习笔记全部章节.docx

《the little sas book学习笔记全部章节.docx》由会员分享,可在线阅读,更多相关《the little sas book学习笔记全部章节.docx(25页珍藏版)》请在冰豆网上搜索。

the little sas book学习笔记全部章节.docx

thelittlesasbook学习笔记全部章节

第一章

1、每一个SAS语句都由一个分号结尾

2、SAS语句不区分大小写。

一条语句可以持续到第二行(只要不把一个单词分开)。

几条语句可以用一行。

可以在任何一列中开始一条语句

SAS数据集也被叫做表、观测值也被叫做行、变量也被叫做列。

在SAS中只有两种数据类型——数值型和字符型。

字符变量的缺失值用空格表示,数值变量的缺失值用句号(.)表示。

SAS命名规则:

名字的长度要小于等于32个字节。

(一个字母1个字节,一个汉字2个字节)

以字母或下划线开头。

可以包含字母、数字、或者是下划线,不能是%$!

*&#@。

可以是小写或大写字母,且不区分大小写。

程序的结束:

当程序遭遇DATA\PROC等标志着新程序开始的语句时,程序结束。

如果运行的是批处理,则run代表语句的结束。

数据步按照一行一行、一个观测值一个观测值的顺序执行

OPTIONS语句既不属于数据步也不属于过程步。

10、导入数据

filenamemydata‘E:

\’;

datauspresidents;

infilemydata;

inputname$party$number;

run;

 

datauspresidents;

infile'E:

\';

inputname$party$number;

run;

第二章

INFILE语句

告诉SAS外部数据的文件名和存放路径,它在data语句之后,在INPUT语句之前。

2、Input语句

最基本用法

读取空格分开的原始数据:

你必须读取所有的数据记录,不能跳过某些值、缺失值必须用句号“.”代替。

字符串数据不能包含空格、长度不能超过8个字符。

读取变量名中含空格的

读取按固定列排列的原始数据:

input关键字后接变量名、再接变量的列位置。

.informats读取非标准格式的原始数据

$代表是字符串、informats代表形式(比如日期的MMDDYY)、w是宽度、d是小数点的位数、最后是句号“.”,缺少句号会使得SAS把形式(如MMDDYY)当做变量名

遇到空格继续读取或不继续读取

定义为$length,在该长度中,空格也算在内。

如果要使SAS读取过程中遇到空格则不再继续读取,则要在$length.前面加冒号“:

”。

从某个地方开始读取

@’[’作为列指示器,告诉SAS读取[之后的内容。

跨行观测值的读取方式

行指示器,斜线/:

告诉SAS跳至原始数据的第二行;#n:

跳至第n行,n代表原始数据中某观测值的行数(#2则让SAS跳至某观测值的第二行)。

一行读取多个观测值

可以在input语句结尾加一个停止符号@@。

按条件读取部分观测值

在input语句结尾加符号@,这告诉SAS先停在(hold)此行,同时用IF语句检测此观测值是否满足需要,如果是,那么可以再用一个input语句来读取现有的变量。

、@vs@@

@的作用类似于@@,都是行停留指示符(line-holdspecifiers),不同地方在于停留多久,@能使SAS停留到下一个input语句(也不换行),@@能使停留的时间到下一个data步(也不换行)。

3、用infile语句中的选项控制输入

FIRSTOBS=

选项告诉SAS从哪一行开始读取数据

OBS=

告诉SAS一直读取到哪一行位置

MISSOVER

在input语句中输入的几个变量,SAS在观测值中就读取几个变量,如果一行未读完,则进入下一行直到输入的变量都读取了变量值。

missover可以让SAS不进入下一行读取,未赋值的变量就使其成为缺失值。

Truncover

当每行的长度不一时,指定最长的列读取观测值,使得当读取短行的观测值时不会跳到下一行读取;

4、用数据步读取分隔符文件

DLM=

指定空格以外的其他分隔符。

如果是用制表符隔开的,那么可以使用DLM=’09’X来指定。

1.忽略引号中数据的分隔符,例如一个观测Joseph,76,"RedRacers,Washington"非引号中的逗号能识别成分隔符,而引号中的逗号不能识别;

2.自动将字符串中的引号去掉;

3.将两个相邻的分隔符当作缺失值来处理。

(并且,DSD默认分隔符为逗号,如果数据中的分隔符不是逗号,那么要用DLM来指定)

5、用导入过程(IMPORTprocedure)读取分隔符文件

如果文件没有正确的扩展名,或者是DLM格式的,必须在procimport语句中用DBMS=option。

如果想要创建的数据集名字已经存在,那么要用replace选项代替。

用LIBNAME语句使用永久数据集

LIBNAME语句

基本形式为:

LIBNAME+库名+‘路径’;

7.查看SAS数据集的描述

Proccontentsdata=data-set

第三章

1、表达式创建新变量

2、使用SAS函数

DAY():

返回一个月中的天数;upcase():

将字母改为大写字母。

3、使用IF-THEN语句

基本形式为:

IF条件THEN执行;

.可以用AND和OR来定义多个条件:

IFModel='Mustang'ANDYear<1975THENStatus='classic';

用IF-THEN语句将观测值分组

构造子集

这两句话是等价的:

IFSex='f';IFSex='m'THENDELETE;

处理SAS的日期数据

SAS处理日期数据的三个工具为:

读取数据的informats,使用数据的函数(functions),打印数据的formats。

Formats打印日期数据时,还需要将数值换成日期

FORMATBirthDateWORDATE18.;

使用retain和sum语句

创建数组

格式

ARRAYstore(4)MacysPenneysSearsTarget;

store

(1)是Macys,store

(2)是Penneys,store(3)是Sears,store(4)是Target。

(变量可以是已存在的,也可以是新创建的)

方便对同类型的变量进行处理

7、列出变量名的快捷方式

 

第四章

1、

BY语句

BY语句只在过程procsort中是必须的,它用来对观测值排序。

其他过程都假设了数据已经进行了排序,所以如果数据还没有排序,那么在分析之前要用procsort排序。

TITLE和FOOTNOTE语句

为输出加上标题和脚注

Label语句

为输出的变量加上标签

在数据步中使用label语句,则标签会保存在数据集中;在过程步中使用,标签只在这个过程中有效。

用where语句在过程中构造子集

不会创建新的数据集

3、用procsort为数据排序

选项nodupkey告诉SAS排序时删除重复值

PROCSORTDATA=messyOUT=neatNODUPKEY;

将DESCENDING加在要降序的变量前面

BYStateDESCENDINGCity;

用procprint打印你的数据

NOOBS选项与LABEL选项

SAS默认打印观测值数,noobs选项可以取消。

SAS默认打印时用变量标签代替变量,用label可以改变取消:

PROCPRINTDATA=data-setNOOBSLABEL;

其他选项

BYvariable-list;前提是数据必须进行排序

IDvariable-list;指定观测变量

SUMvariable-list;打印变量总数

VARvariable-list;指定打印哪部分变量以及打印顺序,默认打印全部。

 

用formats改变打印外观

Format可以用在数据步和过程步中,前者将把格式永久储存,后者只是临时储存。

使用procformat创建自己的格式

第五章

1、ODS

ODSTRACE语句:

告诉SAS打印出SAS日志中输出对象的信息。

ODSselect语句:

知道输出对象的名字之后,选择需要的输出对象。

ODSOUTPUT语句:

有选择地创建新的数据集。

提醒:

ODS语句不属于数据步也不属于过程步,摆放它的好位置是proc过程步之前,这个过程步的输出正是你希望捕捉的。

、使用ODS语句创建HTML输出

Contents=文件是一个链接到主体文件的一个目录表,它将会列出输出的每个部分,点击表中某个条目,相关输出会出现。

Page=文件类似于contents文件,不同的是,contents通过标签列出输出的每个部分,而page文件通过页码列出。

Frame=允许同时访问在不同区域、框架或浏览器窗口中,访问主体文件、contents文件和page文件。

Style=这个选项允许指定一个风格模板,默认的模板名为default。

、使用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)

改变数据单元的背景颜色:

增加VAR语句,将record列的字体改为斜体和粗体:

用style=option定制procreport输出

基本格式

注意:

Definename/group;表示name变量不用sum。

改变数据单元的背景颜色和对齐方式

只改变name这一列

 

使用style=option定制proctabulate(表格)输出

制表基本格式

将数据单元的数据居中,并将背景设置为白色

改变数据单元:

PROCTABULATEDATA=mysalesSTYLE={BACKGROUND=yellow};

改变行或列:

TABLECity,MonthALL*{STYLE={BACKGROUND=red}};

 

6、按条件改变某列值的颜色

用到format语句,相当于自定义改变颜色的条件。

 

第六章

SET语句

使用SET语句修改数据集

基本形式为:

DATAnew-data-set;

SETdata-set;

取子集:

sales中变量day=’F’的观测,并新增变量:

total。

使用set语句堆叠数据

基本形式为:

DATAnew-data-set;

SETdata-set-1data-set-n;

适用于有相同变量的两个数据集。

使用SET语句插入数据集

基本格式:

DATAnew-data-set;

SETdata-set-1data-set-n;

BYvariable-list;

 

merge语句

一对一匹配合并数据集

DATAnew-data-set;

MERGEdata-set-1data-set-2;

BYvariable-list;

两个数据集的必须得先按主键排序。

注意:

如果两个数据集有重叠的变量——除了BY变量,那么第二个数据集中的此变量会覆盖第一个数据集中的。

一对多匹配合并数据

一对多的一要放在前面。

合并统计量与原始数据

合并total和原始数据()

DATAnew-data-set;

IF_N_=1THENSETsummary-data-set;

SEToriginal-data-set;

适用于没有匹配变量的情况下,将一个单个观测值合并到多个观测值中。

update语句

基本格式:

DATAmaster-data-set;

UPDATEmaster-data-settransaction-data-set;

BYvariable-list;

(匹配变量的变量值有唯一性;

交易数据的缺失值不会改写主数据中存在的值)

使用SAS数据集选项

用法:

接在数据集名之后,用括号括起来

KEEP=variable-list告诉SAS保留哪个变量

DROP=variable-list告诉SAS丢弃哪个变量

RENAME=(oldvar=newvar)重命名某个变量

FIRSTOBS=n从观测值n开始读取变量

OBS=n到观测值n停止读取

IN=new-var-name

选择并重命名变量:

用observationnumber选择观测值:

用in=option追踪并选择观测值:

创建的变量是临时的,只存在于数据步期间。

若新变量存在一个数据集中则赋为1,不存在则赋为0.(用于—SET,MERGE,或者UPDATE—)

5、output语句

使用output语句写多维数据集

IFfamily='Ursidae'THENOUTPUTbears;

IFfamily='Ursidae'THENOUTPUTbears;

(如果遗漏了数据集名,则将被写入数据步中所有的数据集中去)

使用output将一个观测值变成多个观测值

SAS通常在数据步结尾将一个观测值写入数据中,output放入循环中,每循环一次就输出一个观测。

 

6、transpose语句

使用proctranspose将观测值转变为变量

PROCTRANSPOSEDATA=old-data-setOUT=new-data-set;

BYvariable-list;(保持不变的变量)

IDvariable;(要变为变量的观测值)

VARvariable-list;(要变为观测的变量)

 

7、使用SAS自动变量

_N_:

记录了SAS在数据步中循环的次数

_ERROR_:

如果一个观测值的数据出现错误,_ERROR_会被赋值为1,否则赋值为0

和:

当使用BY语句时,这两个变量才有效。

SAS处理一个观测值时,如果某个变量的新变量值是第一次出现,被赋值为1,其他观测值中被赋为0。

是同理的某变量的变量值是最后一次出现时,赋为1,其他赋为0。

 

第七章

定义宏变量:

格式:

%LET宏变量名=值;

如:

%letdsn=;

第八章

用PROCUNIVARIATE检验数据分布(normal、plot选项)

用procmeans产生统计量

用procfreq检验分类数据

基本格式:

PROCFREQ;

TABLESvariable-combinations/options;

 

用proccorr检测相关性

基本形式为:

PROCCORR;

VARvariable-list;(变量出现在交叉表顶部)

WITHvariable-list;(变量出现在左侧)

使用procreg做简单的回归分析

PROCREGLINEPRINTER;

MODELdependent=independent;

PLOTdependent*independent='symbol'P.*independent='symbol'/

OVERLAY;

 

读取procreg的输出

使用procanova做单因素方差分析

读取procanova的输出

SQL部分

PROCSQL;

SELECT语句:

SELECT<列子句>(DISTINCT:

只显示查询结果中不重复的数据)

FROM<表子句>

[WHERE<条件子句>]

过滤条件:

用于过滤查询的数据。

格式:

别名.字段表达式=值

连接条件:

用于建立两个表间的关系。

别名1.字段表达式1=别名2.字段表达式2

[GROUPBY<分组子句>][HAVING<过滤条件>]]

HAVING:

将统计结果作为查询过滤条件

[ORDERBY<排序子句>][ASC|DESC]…]

嵌套查询

where'NA'in(selectjobcatfromwhereidnum=supid)

多表查询

1.用WHERE子句设置联接条件

在FROM子句中列出要查询的多个表

在WHERE子句中加入联接条件

[<别名1>].<字段名1>=[<别名2>].<字段名2>

asmleftjoinasd

on=and=

宏变量部分

1、定义宏变量:

%let宏变量名=值;

、用宏定义模块化代码

%macro宏变量名;

...文本;

%mend[宏变量名];

、宏的调用

%宏变量名;

、定义带参数的宏

%macro宏变量名(参数1,参数2,...)

、引用带参数的宏

实例:

看看到底哪里方便了

%变量名(参数1,参数2,....)

2、引用宏变量:

&a

(在带有引号的文本中引用宏变量时,需要将这个文本字符串用双引号括起来。

多次引用宏(宏嵌套):

必须使用%str()函数围住宏变量的值,以后用&d来引用此段程序。

3、显示宏变量

%put&a+(分隔符(一般用句号.))+其他文本

4、宏内调用宏

%macrocreate;子宏一

datatemp;

setmr.&dat;

ifyear(date)=&yearthenoutput;

run;

%mend;

%macroplot;子宏二

procgplotdata=temp;

title2"&year&prtimeseries";

plot&price*date=1;

run;

%mend;

%macroanalyze(dat,year,pr,price);主宏(参数用于代替子宏中的对应参数)

%create;

%plot;

%mend;

%analyze(a000001,1994,开盘价,oppr);

%analyze(a000001,1995,收盘价,clpr);

5、宏do循环语句

计数型循环

%do循环变量=初值%to终值[%by步长];

循环体;

%end;

当型循环

%macromac2;

%leti=0;

%do%while(&i<10);

%leti=%eval(&i+1);(对循环变量累加赋值时需使用函数%eval()来计算算术表达式的值)

%put&i;

%end;

run;

%mend;

%mac2;

6、条件判断语句

%if表达式%then语句1;

%else语句2;

7、宏与数据步的信息交换

dataa;

inputn;

cards;

10

;

run;

%macrowhat;

data_null_;

seta;

callsymput('then',n);(将数据步中的变量n传递给了宏变量then)

run;

footnote"共&then.个结果";(不能漏了句号)

%mend;

8、

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1