sas基础教程(实用版).doc
《sas基础教程(实用版).doc》由会员分享,可在线阅读,更多相关《sas基础教程(实用版).doc(19页珍藏版)》请在咨信网上搜索。
1、在SAS系统中提供了大量的菜单操作,不过它灵活与强大的功能更体现在编程上,本书的实验全部是以程序完成的,所以这里对SAS的菜单操作系统不作介绍,想了解相关内容的读者可以参考其它相关SAS书籍。在SAS程序中,对数据的分析处理可划分为两大步骤: ()将数据读入SAS系统建立的SAS数据集,称为数据步(DATA); ()调用SAS的模块处理和分析数据集中的数据,称为过程步(PROC)。 每一数据步都是以DATA语句开始,以RUN语句结束。而每一过程步则都是以PROC语句开始,以RUN语句结束。当有多个数据步或过程步时,由于后一个DATA或PROC语句可以起到前一步的RUN语句的作用,两步中间的RU
2、N语句也就可以省略。但是最后一个的后面必须有RUN语句,否则不能运行。 SAS还规定,每个语句的后面都要用符号“;”作为这个语句结束的标志。 在编辑SAS程式时,一个语句可以写成多行,多个语句也可以写成一行,可以从一行的开头写起,也可以从一行的任一位置写起。每一行输入完成后,用ENTER键可以使光标移到下一行的开头处,和我们在Windows下进行Word文档编辑相似。例如: data zhouhm; input name $ sex$ math Chinese; cards; 王家宝 男 82 98 李育萍 女 89 106 张春发 男 86 90 王刚 男 98 109 刘颍 女 80 11
3、0 彭亮 男 92 105 ; proc print data = zhouhm; proc means data = zhouhm mean; var math Chinese; run;绪2.1 data数据步简介下面介绍SAS系统的data数据步的一般形式、常用语句以及几个常用的功能。绪2.1.1建立SAS数据集利用数据步建立SAS数据集,通常有两种方式可以输入数据:一是将数据排列在变量名串之后;二是通过外部数据文件直接读取。通过程序录入数据的一般语法格式为:DATA; INPUT$D $D $D; CARDS;S11 S12S1kSn1 Sn2Snk;RUN;说明:1)DATA语句指定
4、要建立的SAS数据集名,通常也包括逻辑库名, 如:Sasuser.zhouhm,把建立的数据集zhouhm存入逻辑库Sasuser中。如果句中省略逻辑库名,则表明建立的是一个临时库Work中的临时数据表。2)INPUT语句将下面的数据录入并指定将其赋予给后面定义的每个变量。因此,在INPUT语句中,必须给出有效的SAS变量名和变量类型。可用选项“$”表示该变量为字符型变量,默认则表示为数值型变量,用D来指定数据的宽度,用法可以参考后面具体的实验。3)DATA、INPUT和CARDS三个关键词缺一不可,CARDS后面的是数据行。4)如果CARDS后面的数据行有重复的域,可以在INPUT语句的末尾
5、增加行停留符“”,起到自动换行的功能,以便接着读入后续的数据。例如:data zhouhm;input number name $ ;cards;200641001 zhang 200641002 wang 200641003 gun200641004 zhu;run;直接从外部数据文件中读取的一般语法为: DATA; INFILE; INPUT.; RUN;说明:这种方式中用INFILE语句指定了一个外部数据文件,所有需要输入的数据存放在该文件中,从而取代了上一种方式中的CARDS语句及其下列的一连串数据,当数据比较多的时候,用这一种方式可以使程序看上去显得比较简洁,具有一些优越性。这里IN
6、FILE语句位置在INPUT语句之前,而在上一种方式中,CARDS语句位置在INPUT语句之后,这些位置是不能随便更换的。 例如: data zhouhm; infiled:datac2006.txt; input name $ sex $ English Chinese; run;绪2.1.2 数据集的复制与修改用SET语句可以把一个已有数据集复制到另一个新数据集,同时还进行修改。当然如果只是复制数据集,用管理器(SAS Explorer)菜单操作完成即可。SET语句的语法格式有两种,有些功能有重复。格式一的语法形式为: DATA; SET; KEPP; DROP; IFTHEN; RUN;
7、说明:1 )如果后面三个选项都不选,就是将数据集进行简单复制。比如要把临时数据集Work. zhouhm复制为永久逻辑库中的数据集Mylib.liuk,程序如下: data mylib. liuk; set zhouhm; run;这个程序中有一个隐含循环过程,SET是读取观测数据的语句,程序在数据步里面反复循环,直到数据集zhouhm最后一个观测数据被读过,循环才结束。SET语句也可以在复制过程的同时给数据集增加一个新的变量: data zhouhm; set zhouhm; meanavg=math*0.4+Chinese/119*100*0.6;run; 2)使用IF.THEN语句可以在
8、复制的同时对生成的数据集进行有条件的修改。比如可以把超过90分的语文成绩改为90分,程序如下:data zhouhma;set zhouhm; if Chinese 90 then Chinese=90;run;3)使用KEEP语句可以指定要保留的变量。程序如下:data zhouhmb;set zhouhm;keep name avg;run;/*这样生成的数据集zhouhmb就只包含name和avg两个变量*/4)使用DROP语句可以指定要丢弃的变量。如上例程序中的KEEP语句换成下面语句即可: drop name math Chinese;/*用这种方法可以取出数据集的一部分列组成的数据
9、集*/5)使用IF语句可以任意指定一个条件,根据这个条件取出数据集中某些行组成新的数据子集。如我们想取出数学分数80分以上,语文分数90分以上的学生的观测值,程序如下:data zhouhm; set zhouhm; if math = 80 and Chinese =90;run;/*上面的语句也可以写成if (math=80)&(Chinese=90);这样更简洁。*/格式二的语法形式为: DATA; SET; IFTHEN; RUN; /* SET后面的还可以放在DATA语句之后*/ 语句说明:选项包括KEEP=,表示引入时只要指定的变量;DROP=,表示不引入指定的变量;OBS=,表示
10、读取观测时读到指定的序号为止(注意是以序号为准而不是观测数);FIRSTOBS=,表示从指定序号的观测值开始读取而跳过之前的观测值不读。 绪2.1.3 数据集的拆分使用SET和OUTPUT语句可以根据某种分类条件把数据行分别存放到不同的数据集中去,其语法格式为: DATA ; SET; SELECT() WHEN() OUTPUT; WHEN() OUTPUT; END RUN;例如,如果想把数据集zhouhm中的所有男生的观测值放在数据集c200601m中,而把其余女生的观测值放到c200601f中,程序如下: data c200601m c200601f; set zhouhm; sele
11、ct(sex); when(男) output c200601m; when(女) output c200601f; otherwise put sex=wrong; end; drop sex; run;在这个程序里有两点需要注意:1)在DATA语句中,我们指定了两个数据集名,而指定数据集名的个数需要根据你拆分的个数保持一致;2)程序中用SET语句引入了一个数据集,如何将这个数据集的观测值分配到两个结果数据集中呢?关键在于SELECT语句和OUTPUT语句。SELECT语句指定变量,而它附带的when 语句确定条件;OUTPUT语句是可执行语句,它执行命令把当前观测值写到语句指定的数据集中去
12、,这样就根据SELECT的结果把不同性别的观测值分别放到两个不同数据集中去了。 绪2.1.4 数据集的合并 数据集的合并根据方向的不同可以分为纵向合并和横向合并,纵向合并一般是多个数据集中的变量是一致的,但观测值的序号数不一致,而横向合并恰好相反,是数据集中观测值的序号数一致但变量是不一致的。1纵向合并如果两个(或多个)数据集中包含了同样的变量,就可以进行数据集的纵向合并。纵向合并的方法相当简单,就是使用SET语句就可以将几个结构相同的数据集上下连接到一起。其一般语法格式如下: DATA; SET(IN=) (IN=).; IF=1 THEN=; IF=1 THEN=; . RUN;例如,在前
13、面我们把zhouhm数据集按男、女拆分成200601m和c200601f两个数据集并抛弃了性别变量,可以用如下程序连接两个数据集并恢复性别信息:data new;set c200601m(in=male)c200601f(in=female);if male=1 then sex=男;if female=1 then sex=女;run;注意:在数据步中,如果观测值来自c200601m,则变量male值为1,如果观测值来自c200601f,则变量female值为1,这样可以使用这两个变量的值定义新变量sex。从这个运行的结果我们可以知道,用数据集选项中的IN=指定的变量并不能直接进入结果数据集
14、而只能用于数据步程序运行中。2横向合并两个(或多个)数据集中如果包含了同样的一些观测值的不同变量,且这多个数据集的相同的观测值是按顺序一一对应,就可以用带有MERGE语句的数据步把这些数据集依据那些相同的观测值横向合并到一个数据集中,其一般的语法格式为: DATA; MERGE; BY; RUN;假如数据集c200601u包含学生的姓名、性别,数据集c200601v包含学生的数学成绩,数据集c200601w包含学生的语文成绩,且各个数据集中的观测值都是按顺序一一对应的,就可以用如下程序把它们横向合并到一个新的数据集Lwh中:data Lwh;merge c200601u c200601v c2
15、00601w;run;语句说明:进行横向合并数据集时要注意到,如果各数据集的观测顺序并不一样时,就会把不同人的成绩合并到一起,这样就会弄乱了整个数据集。所以横向合并数据集时一般要采用按关键字合并的方法,即先把每个数据集按照相同的、能唯一区分各观测值的一个(或几个)变量(BY变量)排序,然后用BY语句和MERGE语句联合使用,这样即使原来观测顺序不一致时也可以保证横向合并的结果不会出错。绪2.2 PROC过程步简介 介绍了data数据步之后,下面接着来介绍SAS系统的PROC过程步的一般形式、常用语句以及几个常用的过程。绪2.2.1 PROC过程步的一般形式SAS过程步的一般形式为: PROC
16、DATA=; /; /; RUN;绪2.2.2 过程步常用语句 过程步一般伴随着具体的数据分析处理过程进行,所以在过程步的语法格式中重点是“过程语句/选项”,下面就介绍几个常见的具体过程语句,更详细的用法读者可以在以后实验中用到时参考相应的书籍再仔细体会。(1)VAR语句VAR语句在大多数过程中都用来指定分析变量,其格式为:VAR.;例如: var English Chinese;(2)BY语句和CLASS语句 BY语句(CLASS语句)在过程中通常用来指定一个或几个依据分类的变量,根据这些分类变量把观测值分组然后对每一组观测值分别进行本过程指定的分析。其语法格式为: BY; 在使用带有BY语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sas 基础教程 实用
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。