您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 求职简历 > 同济医学院-《SAS》课件-数据步1
华中科技大学公卫学院流行病与卫生统计系SAS数据集1蒋红卫Email:JHWCCC@21CN.COMSAS应用一、SAS数据集的概念和结构SAS是处理数据的软件,SAS处理的数据必须以数据集的形式出现。数据集是指使用SAS系统产生的一类具有特殊结构的文件,此类文件是数据的特殊组织形式。“SASdatasets---SAS数据集”SAS所能做的任何工作都离不开SAS数据集,所以可以这样说,SAS数据集是SAS系统的“心脏”。2数据步功能:1.将输入数据转化为SAS数据集;2.编辑数据集中的数据,检查和修改数据中的错误,计算新变量等;3.根据用户要求的格式打印数据,或将数据写入磁盘文件;4.从已有的数据集中通过取子集、合并、更新等方法产生新的数据集。3华中科技大学公卫学院流行病与卫生统计系第一节SAS数据集的建立41.SAS数据集的名称在建立数据集时,你必须给它命名。SAS数据集的名字可以有1-8个字符,必须以字母或下划线开始,后面跟英文字母、数字或下划线,中间不能有空格。下面这些均是合法的SAS数据集名:SALES_TAXES_88FILESQUARTER_15SAS数据集组成要素1.数据值数据值是构成SAS数据集的基本单元,数据值分为数值型数据、字符型数据和日期型数据三种类型。2.观测值描述一个观察单位(如一个人,一个地区,一年)特征的一系列数据值称为观测值。3.变量具有相同特征的数据值的集合组成了变量。4.数据集数据集是由若干个观测值组成的集合。6SAS数据集的结构OBSNAMESEXSIS2S31WANGBOM7978922HEWEIM9669873YANJINF9887934MALIVF8885905HAVHUIM7393896ZHOUBINM9687897LIMINF8793908SUNYIF7988767数据值变量观测值2.SAS数据集分为两种临时数据集temporarySASdatasets永久数据集permanentSASdatasets所谓临时数据集,是指本次SAS作业(SASsession)中临时建立并只在本次SAS作业中有效的临时性的数据集,退出SAS,临时数据集即消失。所谓永久数据集是存贮在外部存贮介质(硬盘、软盘等)上的数据集,不删除可以长久存在,反复使用。8SAS数据集——临时数据集Dataaa;Inputidx1x2x3$@@;Cards;115345m214537f315040m;Procprint;Run;SAS数据集——永久数据集Libnamem’d:\gw’;Datam.aa;Inputidx1x2x3$@@;Cards;115345m214537f315040m;Run;SAS数据集—调用永久数据集•libnamem'd:\gw';•run;/*建永久数据集*/•databb;•setm.aa;/*调用永久数据集*/•procprint;•run;3.一点说明建立或调用一个永久数据集,必须使用两级名规则。第一级名又叫库逻辑名(libref),用来表示数据集的目录路径;第二级名是数据集名(filename),用来区别其它的数据集。一级名与二级名用“.”分开,例如:在以CLINIC为逻辑名的目录路径下有一永久数据集ADMIT,调用此数据集时,要用两级名,CLINIC.ADMIT↓↓libreffilename12SAS系统给每个临时数据集自动给予一个叫“work”的一级名,但在引用临时数据集时,不用加“work”字样(生成临时数据集时,在LOG窗口可以看到临时数据集的全称)。故在实际应用中,使用单名的数据集都是临时数据集,使用两级名的数据集则是永久数据集。13二、建立SAS数据集14SAS语句的书写规则:1.以SAS关键词(SASkeyword)开头,关键词可以大写字母可以小写;2.以分号(semicolon)结尾;3.可以从任意行或列开始或结束;4.一条语句可以连续写多行;5.多条语句可以在同一行;6.字与字间(words)用空格分隔;7.程序的最后要有“run”语句;DATACLASS;INPUTNAME$SEX$S1S2S2;CARDS;WANGBOM797892HEWEIM966987;RUN;1.临时数据集的建立(1)程序的基本结构:DATA语句;INPUT语句;用于数据步的其它语句……CARDS;若干数据行……;RUN;15A直接通过键盘输入数据16OBSNAMESEXSIS2S31WANGBOM7978922HEWEIM9669873YANJINF9887934MALIVF8885905HAVHUIM7393896ZHOUBINM9687897LIMINF8793908SUNYIF798876例17DATACLASS;INPUTNAME$SEX$S1S2S2;CARDS;WANGBOM797892HEWEIM966987YANJINF988793MALINF888590HANHUIM739389ZHOUBINM968789LIMINF879390SUNYIF798876;RUN;(1)DATA语句语句格式:DATA[数据集名表][选择项];18DATA语句的作用是表明数据步的开始,并给出所建数据集的名称。数据集名必须以英文字母开始,最长不超过8个字符。数据集名可以是一个或者多个。DATA语句中,如果不给出数据集名,则SAS系统自动以DATA1、DATA2等依次命名所建立的数据集。DATAclass;(2)INPUT语句19功能:读取CARDS语句后的数据,或从外部数据文件读数据,并将读入的数据赋给“INPUT”后相应的变量;[变量说明]主要有以下三种格式:自由格式列输入格式格式化输入格式:INPUT[变量说明];INPUTNAME$SEX$S1S2S3;1)自由输入格式是最简单的数据输入方法,它只需要在INPUT语句中按顺序列变量名,而不必了解输入记录中数据占有哪些列。语句格式:INPUT变量名[$];INPUTNAME$SEX$S1S2S2;注意:①INPUT语句中列出的变量的顺序与相应的输入数据的顺序必须一致,$指明左边的变量为字符型变量。②使用列表输入数据必须通过空格分隔。③字符型数据的长度缺省值是8个字节,如果超过8位可使用LENGTH、ATTRIB、INFORMAT语句重新定义字符串的宽度。20列表输入格式举例DATACLASS;INPUTNAME$SEX$S1S2S2;CARDS;WANGBOM797892HEWEIM966987YANJINF988793MALINF888590HANHUIM739389ZHOUBINM968789LIMINF879390SUNYIF798876RUN;212)列输入格式在INPUT语句变量名后须指出相应的变量值所处的列号范围。语句格式:INPUT变量名[$]开始列[-终止列];开始列指明该变量要读取的数据的起始列号终止列指明该变量要读取的数据的终止列号例如:INPUTNAME$1-8S112-13;该语句从每个输入数据行的第1列至第8列读取字符型变量NAME的值,从第12列至第13列读取数值型变量S1的值。22列输入的特点:①适用于所有输入行中的同一变量值位于相同的列时;②输入值可以任何顺序读入,无须考虑它们在输入记录中的位置;例如:INPUTS112-13NAME$1-8;③字符型数据可包含空格;④字符型数据可以最多到200个字符长;⑤可读取全部或部分数值。例如:INPUTID10-15GROUP13;第10至15列为ID的值,ID的第4个数字即第13列又是GROOP的值。23列输入格式举例DATACLASS;INPUTNAME$1-8SEX$10S112-13S215-16S218-19;CARDS;WANGBOM797892HEWEIM966987YANJINF988793MALINF888590HANHUIM739389ZHOUBINM968789LIMINF879390SUNYIF798876RUN;243)格式化输入在INPUT语句变量后给出一个输入格式,用来说明变量类型和字段的宽度。语句格式:INPUT变量名[$]SAS输入格式;上面的SAS输入格式包括一个园点(.)或以(.)结尾。如6.2,$10.,MMDDyy8.等。格式化输入特别适用于读入日期型变量,由于日期表示方法多种多样,有用MMDDYY形式表示,如031598或03/15/98或03-15-98;也有用DDMMYY形式表示如12JAN97等,为能读入这些日期型数据,在SAS系统中设计了许多输入格式。25格式化输入举例(1)DATAINFO;INPUTNAME$BIRTHDAYMMDDYY8.HEIGHT5.2;CARDS;WANGBO02-21-80175HEWEI07/08/79178YANJIN12/16/81160MALIN030781166RUN;26注意:①格式化输入时,每读完一个数值,数据指针移至该数值后的第一列,接着读下一个数。当数据之间以空格符分隔时,变量宽度的设置应包含数值的宽度和空格分隔符。如果格式给出的长度不足,则会出现截尾。②数据输出时,一般要用相应的格式。③当多个变量排列在一起,它们都有相同的长度和类型,用分组格式列表法可简化输入。如X1、X2……X10等10个字符型变量的值紧挨在一起,每个变量长度为3,则可用如下语句读入INPUT(X1-X10)($3);27格式化输入举例DATACLASS3;INPUTDATEYYMMDD10.(X1-X5)(3.);CARDS;1995-05-2020503025101996-07-032140502081996-12-0319202510151997-01-151851423020RUN;28用打印过程(procprint;run;)将其输出在OUTPUT窗口:OBSDATEX1X2X3X4X511292320503025102133332140502083134861920251015413529185142302029SAS是用1960年1月1日到变量所表示日期之间的天数来存储日期的。上例12923表示1995年5月20日距1960年1月1日12923天。如果要求某变量以某种格式输出,需要借助SAS输出格式。PROCPRINT;FORMATDATEYYMMDD10.;RUN;PROCPRINT;FORMATDATEDATE7.;RUN;30OBSDATEX1X2X3X4X511995-05-20205030251021996-07-0321405020831996-12-03192025101541997-01-15185142302031OBSDATEX1X2X3X4X5120MAY952050302510203JUL96214050208303DEC961920251015415JAN97185142302032(3)CARDS语句格式:CARDS;功能:表明数据行的开始与数据步的结束。(4)RUN语句格式:RUN;功能:命令计算机执行刚发送的SAS程序。33(5)行保持符“@@”用法。DATAB;INPUTXY@@;CARDS;23.1612.923.7111.0022.3312.21RUN;OBSXy123.1612.9223.7111.0322.3312.2134•双@@符和单@符号的区别双@@符号表示读取完一个input语句中所有变量对应的一组观察值后不换行,连续读取所有变量对应的另一组观察值,直到全部数据读完为止。单@符号表示读取完第一个input语句中所有变量对应的观察值后不换行,接着读取下一个input语句中所有变量对应的观察值,直到完成一个数据步中的所有input语句后再换行读取下一列的数据。行保持符号缺省表示读取完一个input语句中所有变量对应的观察值后就换行读取下一行数据。当一个数据步仅含有一个input语句时,行保持符号缺省和单@符号起的作用相同352.从外部数据文件读入数据建立SAS数据集,除了直接从键盘输入数据外,还可
本文标题:同济医学院-《SAS》课件-数据步1
链接地址:https://www.777doc.com/doc-3463637 .html