1、华中科技大学公卫学院华中科技大学公卫学院流行病与卫生统计系流行病与卫生统计系同济医学院同济医学院SASSAS数据步数据步一、一、SASSAS数据集的概念和结构数据集的概念和结构 SASSAS是是处处理理数数据据的的软软件件,SASSAS处处理理的的数数据据必必须须以以数数据据集集的的形形式式出出现现。数数据据集集是是指指使使用用SASSAS系系统统产产生生的的一一类类具具有有特特殊殊结结构构的文件,此类文件是数据的特殊组织形式。的文件,此类文件是数据的特殊组织形式。“SAS data sets-SASSAS data sets-SAS数据集数据集”SASSAS所所能能做做的的任任何何工工作作都
2、都离离不不开开SASSAS数数据据集集,所所以以可可以以这这样样说说,SASSAS数数据据集集是是SASSAS系统的系统的“心脏心脏”。2同济医学院同济医学院SAS数据步数据步数据步功能:数据步功能:1 1将输入数据转化为将输入数据转化为SASSAS数据集;数据集;2 2编编辑辑数数据据集集中中的的数数据据,检检查查和和修修改改数数据据中中的错误,计算新变量等;的错误,计算新变量等;3 3根根据据用用户户要要求求的的格格式式打打印印数数据据,或或将将数数据据写入磁盘文件;写入磁盘文件;4 4从从已已有有的的数数据据集集中中通通过过取取子子集集、合合并并、更更新等方法产生新的数据集。新等方法产生
3、新的数据集。3同济医学院同济医学院SAS数据步数据步华中科技大学公卫学院华中科技大学公卫学院流行病与卫生统计系流行病与卫生统计系第一节第一节 SASSAS数据集的建立数据集的建立 4同济医学院同济医学院SAS数据步数据步1 1SASSAS数据集的名称数据集的名称 在在建建立立数数据据集集时时,你你必必须须给给它它命命名名。SASSAS数数据据集集的的名名字字可可以以有有1-81-8个个字字符符,必必须须以以字字母母或或下下划划线线开开始始,后后面面跟跟英英文文字字母母、数数字字或或下下划划线线,中中间间不不能能有有空空格格。下下面面这这些均是合法的些均是合法的SASSAS数据集名:数据集名:S
4、ALESSALES _TAXES _TAXES _88FILES _88FILES QUARTER_1 QUARTER_15同济医学院同济医学院SAS数据步数据步SASSAS数据集组成要素数据集组成要素 1 1数据值数据值 数据值是构成数据值是构成SASSAS数据集的基本单元,数据集的基本单元,数据值分为数值型数据、字符型数据和日期型数据值分为数值型数据、字符型数据和日期型数据三种类型。数据三种类型。2 2观测值观测值 描述一个观察单位(如一个人,一描述一个观察单位(如一个人,一个地区,一年)特征的一系列数据值称为观测个地区,一年)特征的一系列数据值称为观测值。值。3 3变量变量 具有相同特征
5、的数据值的集合组成了具有相同特征的数据值的集合组成了变量。变量。4 4数据集数据集 数据集是由若干个观测值组成的集合。数据集是由若干个观测值组成的集合。6同济医学院同济医学院SAS数据步数据步SASSAS数据集的结构数据集的结构OBS NAME SEXOBS NAME SEXSISIS2S2S3S31 WANGBO1 WANGBOMM7979787892922 2 HEWEI M HEWEI M 9696696987873 3 YANJIN F 98 YANJIN F 98878793934 4 MALIV MALIV F F8888858590905 5 HAVHUI HAVHUIMM737
6、3939389896 6 ZHOUBIN ZHOUBINMM9696878789897 7 LIMIN LIMIN F F8787939390908 8 SUNYI SUNYI F F7979888876767数据值数据值数据值数据值变量变量观观测测值值同济医学院同济医学院SAS数据步数据步 2 2SASSAS数据集分为两种数据集分为两种临时数据集临时数据集 temporary SAS data setstemporary SAS data sets永久数据集永久数据集 permanent SAS data setspermanent SAS data sets 所所谓谓临临时时数数据据集集,
7、是是指指本本次次SASSAS作作业业(SAS SAS sessionsession)中中临临时时建建立立并并只只在在本本次次SASSAS作作业业中中有有效效的的临临时时性性的的数数据据集集,退退出出SASSAS,临临时数据集即消失。时数据集即消失。所所谓谓永永久久数数据据集集是是存存贮贮在在外外部部存存贮贮介介质质(硬硬盘盘、软软盘盘等等)上上的的数数据据集集,不不删删除除可可以以长长久存在,反复使用。久存在,反复使用。8同济医学院同济医学院SAS数据步数据步SASSAS数据集数据集临时数据集临时数据集Data aa;Data aa;Input id x1 x2 x3$;Input id x1
8、 x2 x3$;Cards;Cards;1 1153 45 m 153 45 m 2 145 37 f2 145 37 f3 150 40 m3 150 40 m;Proc print;Proc print;Run;Run;9同济医学院同济医学院SAS数据步数据步SASSAS数据集数据集永久数据集永久数据集Libname md:gw;Libname md:gw;Data m.aa;Data m.aa;Input id x1 x2 x3$;Input id x1 x2 x3$;Cards;Cards;1 153 45 m1 153 45 m2 145 37 f2 145 37 f3 150 40
9、 m3 150 40 m;Run;Run;10同济医学院同济医学院SAS数据步数据步SASSAS数据集数据集调用永久数据集调用永久数据集libname md:gw;run;/*建永久数据集*/data bb;set m.aa;/*调用永久数据集*/proc print;run;11同济医学院同济医学院SAS数据步数据步3 3一点说明一点说明 建建立立或或调调用用一一个个永永久久数数据据集集,必必须须使使用用两两级级名名规规则则。第第一一级级名名又又叫叫库库逻逻辑辑名名(libreflibref),用用来来表表示示数数据据集集的的目目录录路路径径;第第二二级级名名是是数数据据集集名名(filen
10、amefilename),用用来来区区别别其其它它的的数数据据集集。一级名与二级名用一级名与二级名用“.”.”分开,分开,例例如如:在在以以CLINICCLINIC为为逻逻辑辑名名的的目目录录路路径径下下有有一一永永久久数数据据集集ADMITADMIT,调调用用此此数数据据集集时时,要用两级名,要用两级名,CLINIC.ADMIT CLINIC.ADMIT libref filename libref filename 12同济医学院同济医学院SAS数据步数据步 SASSAS系系统统给给每每个个临临时时数数据据集集自自动动给给予予一一个个叫叫“work”work”的的一一级级名名,但但在在引引
11、用用临临时时数数据据集集时时,不不用用加加“work”work”字字样样(生生成成临临时时数数据据集集时时,在在LOGLOG窗窗口口可可以以看到临时数据集的全称)。看到临时数据集的全称)。故故在在实实际际应应用用中中,使使用用单单名名的的数数据据集集都都是是临临时时数数据据集集,使使用用两两级级名名的的数数据据集则是永久数据集。集则是永久数据集。13同济医学院同济医学院SAS数据步数据步二、建立二、建立SASSAS数据集数据集 14SASSAS语句的书写规则:语句的书写规则:1.1.以以以以SASSAS关键词(关键词(关键词(关键词(SASkeywordSASkeyword)开头,)开头,)开
12、头,)开头,关键词可以大写字母可以小写;关键词可以大写字母可以小写;关键词可以大写字母可以小写;关键词可以大写字母可以小写;2.2.以分号(以分号(以分号(以分号(semicolonsemicolon)结尾;)结尾;)结尾;)结尾;3.3.可以从任意行或列开始或结束;可以从任意行或列开始或结束;可以从任意行或列开始或结束;可以从任意行或列开始或结束;4.4.一条语句可以连续写多行;一条语句可以连续写多行;一条语句可以连续写多行;一条语句可以连续写多行;5.5.多条语句可以在同一行;多条语句可以在同一行;多条语句可以在同一行;多条语句可以在同一行;6.6.字与字间(字与字间(字与字间(字与字间(
13、wordswords)用空格分隔;)用空格分隔;)用空格分隔;)用空格分隔;7.7.程序的最后要有程序的最后要有程序的最后要有程序的最后要有“run”run”语句;语句;语句;语句;DATACLASSDATACLASS;INPUTNAME$INPUTNAME$SEX$S1S2S2SEX$S1S2S2;CARDSCARDS;WANGBOM797892WANGBOM797892HEWEIM966987HEWEIM966987;RUNRUN;同济医学院同济医学院SAS数据步数据步1 1 临时数据集的建立临时数据集的建立(1 1)程序的基本结构:)程序的基本结构:DATA DATA 语句;语句;INP
14、UT INPUT 语句;语句;用于数据步的其它语句用于数据步的其它语句CARDSCARDS;若干数据行若干数据行 ;RUNRUN;15 A A 直接通过键盘输入数据直接通过键盘输入数据同济医学院同济医学院SAS数据步数据步16OBSOBSNAMESEXNAMESEXSISIS2S2S3S31WANGBO1WANGBOMM7979787892922 2 HEWEIMHEWEIM9696696987873 3 YANJINF98YANJINF98878793934 4 MALIVMALIVF F8888858590905 5 HAVHUIHAVHUIMM7373939389896 6 ZHOUBI
15、NZHOUBINMM9696878789897 7 LIMINLIMINF F8787939390908 8 SUNYISUNYI FF797988887676例例同济医学院同济医学院SAS数据步数据步17DATACLASSDATACLASS;INPUTNAME$SEX$S1S2S2INPUTNAME$SEX$S1S2S2;CARDSCARDS;WANGBOM797892WANGBOM797892HEWEIM966987HEWEIM966987YANJINF988793YANJINF988793MALINF888590MALINF888590HANHUIM739389HANHUIM739389
16、ZHOUBINM968789ZHOUBINM968789LIMINF879390LIMINF879390SUNYIF798876SUNYIF798876;RUNRUN;同济医学院同济医学院SAS数据步数据步(1 1)DATADATA语句语句 语句格式语句格式 :DATA DATA 数据集名表数据集名表 选择项选择项;18DATADATA语句的作用是语句的作用是语句的作用是语句的作用是表明数据步的开始,并给出所建表明数据步的开始,并给出所建表明数据步的开始,并给出所建表明数据步的开始,并给出所建数据集的名称。数据集的名称。数据集的名称。数据集的名称。数据集名必须以英文字母开始,最长不超过数据集名
17、必须以英文字母开始,最长不超过数据集名必须以英文字母开始,最长不超过数据集名必须以英文字母开始,最长不超过8 8个字符。个字符。个字符。个字符。数据集名可以是一个或者多个。数据集名可以是一个或者多个。数据集名可以是一个或者多个。数据集名可以是一个或者多个。DATADATA语句中,如果语句中,如果语句中,如果语句中,如果不给出数据集名,则不给出数据集名,则不给出数据集名,则不给出数据集名,则SASSAS系统自动以系统自动以系统自动以系统自动以DATA1DATA1、DATA2DATA2等依等依等依等依次命名所建立的数据集。次命名所建立的数据集。次命名所建立的数据集。次命名所建立的数据集。DATAc
18、lass;同济医学院同济医学院SAS数据步数据步 (2 2)INPUTINPUT语句语句19功能:读取功能:读取功能:读取功能:读取CARDSCARDS语句后的数据,或从外部数据语句后的数据,或从外部数据语句后的数据,或从外部数据语句后的数据,或从外部数据文件读数据,并将读入的数据赋给文件读数据,并将读入的数据赋给文件读数据,并将读入的数据赋给文件读数据,并将读入的数据赋给“INPUT”INPUT”后相后相后相后相应的变量;应的变量;应的变量;应的变量;变量说明变量说明变量说明变量说明 主要有以下三种格式:主要有以下三种格式:主要有以下三种格式:主要有以下三种格式:自由格式自由格式自由格式自由
19、格式 列输入格式列输入格式列输入格式列输入格式 格式化输入格式化输入格式化输入格式化输入 格式:格式:INPUT INPUT 变量说明变量说明;INPUTNAME$SEX$S1S2S3INPUTNAME$SEX$S1S2S3;同济医学院同济医学院SAS数据步数据步1 1)自自由由输输入入格格式式 是是最最简简单单的的数数据据输输入入方方法法,它它只只需需要要在在INPUTINPUT语语句句中中按按顺顺序序列列变变量量名名,而而不不必了解输入记录中数据占有哪些列。必了解输入记录中数据占有哪些列。语句格式:语句格式:INPUT INPUT 变量名变量名$;INPUT INPUT NAME NAME
20、$SEX SEX$S1 S1 S2 S2 S2S2;注注意意:INPUTINPUT语语句句中中列列出出的的变变量量的的顺顺序序与与相相应应的的输输入入数数据据的的顺顺序序必必须须一一致致,$指指明明左左边边的的变变量量为为字字符符型型变变量量。使使用用列列表表输输入入数数据据必必须须通通过过空空格格分分隔隔。字字符符型型数数据据的的长长度度缺缺省省值值是是8 8个个字字节节,如如果果超超过过8 8位位可可使使用用LENGTHLENGTH、ATTRIBATTRIB、INFORMATINFORMAT语句重新定义字符串的宽度。语句重新定义字符串的宽度。20同济医学院同济医学院SAS数据步数据步列表输
21、入格式举例列表输入格式举例 DATA CLASS DATA CLASS;INPUT NAME$SEX$S1 S2 S2INPUT NAME$SEX$S1 S2 S2;CARDSCARDS;WANGBO M 79 78 92 WANGBO M 79 78 92 HEWEI M 96 69 87 HEWEI M 96 69 87 YANJIN F 98 87 93 YANJIN F 98 87 93 MALIN F 88 85 90 MALIN F 88 85 90 HANHUI M 73 93 89 HANHUI M 73 93 89 ZHOUBIN M 96 87 89 ZHOUBIN M 9
22、6 87 89 LIMIN F 87 93 90 LIMIN F 87 93 90 SUNYI F 79 88 76 SUNYI F 79 88 76 RUN RUN;21同济医学院同济医学院SAS数据步数据步 2 2)列列输输入入格格式式 在在INPUTINPUT语语句句变变量量名名后后须须指指出出相应的变量值所处的列号范围。相应的变量值所处的列号范围。语句格式:语句格式:INPUT INPUT 变量名变量名$开始列开始列 -终止列终止列;开始列开始列 指明该变量要读取的数据的起始列号指明该变量要读取的数据的起始列号 终止列终止列 指明该变量要读取的数据的终止列号指明该变量要读取的数据的终止
23、列号 例如:例如:INPUT NAME$1-8 S1 12-13INPUT NAME$1-8 S1 12-13;该语句从每个输入数据行的第该语句从每个输入数据行的第1 1列至第列至第8 8列读列读 取字符型变量取字符型变量NAMENAME的值,从第的值,从第1212列至第列至第1313 列读取数值型变量列读取数值型变量S1S1的值。的值。22同济医学院同济医学院SAS数据步数据步 列输入的特点:列输入的特点:适适用用于于所所有有输输入入行行中中的的同同一一变变量量值值位位于于相相同同的的列时;列时;输输入入值值可可以以任任何何顺顺序序读读入入,无无须须考考虑虑它它们们在在输输入记录中的位置;入
24、记录中的位置;例如:例如:INPUT S1 12-13 NAME$1-8INPUT S1 12-13 NAME$1-8;字符型数据可包含空格;字符型数据可包含空格;字符型数据可以最多到字符型数据可以最多到200200个字符长;个字符长;可读取全部或部分数值。可读取全部或部分数值。例例如如:INPUT INPUT ID ID 10-15 10-15 GROUP GROUP 1313;第第1010至至1515列列为为IDID的的值值,IDID的的第第4 4个个数数字字即即第第1313列列又又是是GROOPGROOP的值。的值。23同济医学院同济医学院SAS数据步数据步列输入格式举例列输入格式举例
25、DATA CLASS DATA CLASS;INPUT INPUT NAME NAME$1-8 1-8 SEX SEX$10 10 S1 S1 12-13 12-13 S2 S2 15-16 S2 18-1915-16 S2 18-19;CARDSCARDS;WANGBO WANGBO M 79 78 92 M 79 78 92 HEWEI HEWEI M 96 69 87M 96 69 87 YANJIN YANJIN F 98 87 93F 98 87 93 MALIN MALIN F 88 85 90F 88 85 90 HANHUI HANHUI M 73 93 89M 73 93 8
26、9 ZHOUBIN ZHOUBIN M 96 87 89M 96 87 89 LIMIN F 87 93 90 LIMIN F 87 93 90 SUNYI SUNYI F 79 88 76F 79 88 76 RUN RUN;24同济医学院同济医学院SAS数据步数据步 3 3)格格式式化化输输入入 在在INPUTINPUT语语句句变变量量后后给给出出一一个输入格式,用来说明变量类型和字段的宽度。个输入格式,用来说明变量类型和字段的宽度。语句格式:语句格式:INPUT INPUT 变量名变量名$SAS$SAS输入格式;输入格式;上上面面的的SASSAS输输入入格格式式包包括括一一个个园园点点(
27、.)或或以以(.)结结尾尾。如如6.26.2,$10.$10.,MMDDyy8.MMDDyy8.等等。格格式式化化输输入入特特别别适适用用于于读读入入日日期期型型变变量量,由由于于日日期期表表示示方方法法多多种种多多样样,有有用用MMDDYYMMDDYY形形式式表表示示,如如031598031598或或03/15/9803/15/98或或03-15-9803-15-98;也也有有用用DDMMYYDDMMYY形形式式表表示示如如12JAN9712JAN97等等,为为能能读读入入这这些些日日期期型型数数据据,在在SASSAS系系统统中中设设计计了了许多输入格式。许多输入格式。25同济医学院同济医学
28、院SAS数据步数据步格式化输入举例(格式化输入举例(1 1)DATA INFO DATA INFO;INPUT INPUT NAME NAME$BIRTHDAY BIRTHDAY MMDDYY8.HEIGHT 5.2MMDDYY8.HEIGHT 5.2;CARDSCARDS;WANGBO 02-21-80 175WANGBO 02-21-80 175 HEWEI 07/08/79 178 HEWEI 07/08/79 178 YANJIN 12/16/81 160 YANJIN 12/16/81 160 MALIN 03 07 81 166 MALIN 03 07 81 166 RUN RUN
29、;26同济医学院同济医学院SAS数据步数据步 注意:注意:格格式式化化输输入入时时,每每读读完完一一个个数数值值,数数据据指指针针移移至至该该数数值值后后的的第第一一列列,接接着着读读下下一一个个数数。当当数数据据之之间间以以空空格格符符分分隔隔时时,变变量量宽宽度度的的设设置置应应包包含含数数值值的的宽宽度度和和空空格格分分隔隔符符。如如果果格格式式给给出出的的长长度度不不足,则会出现截尾。足,则会出现截尾。数据输出时,一般要用相应的格式。数据输出时,一般要用相应的格式。当多个变量排列在一起,它们都有相同的长度当多个变量排列在一起,它们都有相同的长度和类型,用分组格式列表法可简化输入。和类型
30、,用分组格式列表法可简化输入。如如X1X1、X2 X10X2 X10等等1010个字符型变量的值紧挨个字符型变量的值紧挨在一起,每个变量长度为在一起,每个变量长度为3 3,则可用如下语句读入,则可用如下语句读入 INPUT INPUT (X1-X10X1-X10)($3$3););27同济医学院同济医学院SAS数据步数据步格式化输入举例格式化输入举例DATA CLASS3;DATA CLASS3;INPUT INPUT DATE DATE YYMMDD10.YYMMDD10.(X1-X5)(X1-X5)(3.);(3.);CARDS;CARDS;1995-05-20 20 50 30 25 1
31、01995-05-20 20 50 30 25 101996-07-03 21 40 50 20 81996-07-03 21 40 50 20 81996-12-03 19 20 25 10 151996-12-03 19 20 25 10 151997-01-15 18 51 42 30 201997-01-15 18 51 42 30 20RUN;RUN;28同济医学院同济医学院SAS数据步数据步用用打打印印过过程程(proc proc print;run;print;run;)将将其其输输出出在在OUTPUTOUTPUT窗口窗口:OBS OBS DATE DATE X1 X1 X2 X
32、2 X3 X3 X4 X5X4 X5 1 1 12923 12923 20 20 50 50 30 30 25 1025 10 2 2 13333 13333 21 21 40 40 50 50 20 820 8 3 3 13486 13486 19 19 20 20 25 25 10 1510 15 4 4 13529 13529 18 18 51 51 42 42 30 2030 2029同济医学院同济医学院SAS数据步数据步 SAS SAS是用是用19601960年年1 1月月1 1日到变量所表示日期之日到变量所表示日期之间的天数来存储日期的。上例间的天数来存储日期的。上例1292312
33、923表示表示19951995年年5 5月月2020日距日距19601960年年1 1月月1 1日日1292312923天。天。如果要求某变量以某种格式输出,需要借助如果要求某变量以某种格式输出,需要借助SASSAS输出格式。输出格式。PROC PRINT;PROC PRINT;FORMAT DATE YYMMDD10.;FORMAT DATE YYMMDD10.;RUN;RUN;PROC PRINT;PROC PRINT;FORMAT DATE DATE7.;FORMAT DATE DATE7.;RUN;RUN;30同济医学院同济医学院SAS数据步数据步 OBS DATE X1 X2 X3
34、X4 X5 OBS DATE X1 X2 X3 X4 X5 1 1995-05-20 20 50 30 25 10 1 1995-05-20 20 50 30 25 10 2 1996-07-03 21 40 50 20 8 2 1996-07-03 21 40 50 20 8 3 1996-12-03 19 20 25 10 15 3 1996-12-03 19 20 25 10 15 4 1997-01-15 18 51 42 30 20 4 1997-01-15 18 51 42 30 2031同济医学院同济医学院SAS数据步数据步OBSDATEX1X2X3X4X5120MAY95205
35、0302510203JUL96214050208303DEC961920251015415JAN971851423020 32同济医学院同济医学院SAS数据步数据步 (3 3)CARDSCARDS语句语句格式:格式:CARDSCARDS;功能:表明数据行的开始与数据步的结束。功能:表明数据行的开始与数据步的结束。(4 4)RUNRUN语句语句格式:格式:RUN;RUN;功能:命令计算机执行刚发送的功能:命令计算机执行刚发送的SASSAS程序。程序。33同济医学院同济医学院SAS数据步数据步(5 5)行保持符)行保持符“”用法。用法。DATA BDATA B;INPUT X Y INPUT X
36、Y ;CARDSCARDS;23.16 12.9 23.71 11.00 22.33 12.2123.16 12.9 23.71 11.00 22.33 12.21RUNRUN;OBS X yOBS X y1 23.16 12.91 23.16 12.92 23.71 11.02 23.71 11.03 22.33 12.213 22.33 12.2134同济医学院同济医学院SAS数据步数据步双双符和单符和单符号的区别符号的区别 双双符号表示读取完一个符号表示读取完一个inputinput语句中所有语句中所有变量对应的一组观察值后变量对应的一组观察值后不换行不换行,连续读取所有变,连续读取所有
37、变量对应的另一组观察值,直到全部数据读完为止。量对应的另一组观察值,直到全部数据读完为止。单单符号表示读取完第一个符号表示读取完第一个inputinput语句中所有语句中所有变量对应的观察值后不换行,接着读取下一个变量对应的观察值后不换行,接着读取下一个inputinput语句中所有变量对应的观察值,直到完成一语句中所有变量对应的观察值,直到完成一个数据步中的所有个数据步中的所有inputinput语句后再换行读取下一列语句后再换行读取下一列的数据的数据。l行保持符号缺省表示读取完一个行保持符号缺省表示读取完一个inputinput语句中所有语句中所有变量对应的观察值后就换行读取下一行数据。变
38、量对应的观察值后就换行读取下一行数据。l当一个数据步仅含有一个当一个数据步仅含有一个inputinput语句时,行保持符语句时,行保持符号缺省和单号缺省和单符号起的作用相同符号起的作用相同35同济医学院同济医学院SAS数据步数据步 2 2从外部数据文件读入数据从外部数据文件读入数据 建建立立SASSAS数数据据集集,除除了了直直接接从从键键盘盘输输入入数数据据外外,还还可可以以利利用用已已有有的的外外部部数数据据文文件件,将将其其转转化化为为SASSAS数数据据集集。但但这这里里要要求求外外部数据文件必须是部数据文件必须是ASCASC码文本文件。码文本文件。36同济医学院同济医学院SAS数据步
39、数据步DATA DATA 数据集名;数据集名;INFILE INFILE 外部数据文件名外部数据文件名;INPUT INPUT 变量说明;变量说明;RUNRUN;其中,其中,INFILEINFILE语句是指明从哪一个文件读入语句是指明从哪一个文件读入数据(用单引号将文件名括起来)。数据(用单引号将文件名括起来)。37DATACLASS;INFILEc:FIT.TXT;INPUTageSEX$heightbirth;RUN;12f1.251980120213m1.351979101211m1.111981111116f1.421976043013f1.5619790101同济医学院同济医学院SA
40、S数据步数据步格式:格式:FILENAME FILENAME 数数据据文文件件逻逻辑辑名名 外外部部文件全名文件全名;DATA SASDATA SAS数据集名;数据集名;INFILE INFILE 数据文件逻辑名;数据文件逻辑名;INPUT INPUT 变量说明;变量说明;38同济医学院同济医学院SAS数据步数据步文本文件文本文件test1.dat,test1.dat,,test2.dat test2.dat 和和test3.dat test3.dat 保存在保存在d:testd:test子目录中子目录中 data d1;infile d:testtest1.dat;data d1;infil
41、e d:testtest1.dat;input age sex$height birthday yymmdd8.;run;input age sex$height birthday yymmdd8.;run;Filename aa d:testtest1.dat;Filename aa d:testtest1.dat;data d1;infile aa;data d1;infile aa;input age sex$height birthday yymmdd8.;run;input age sex$height birthday yymmdd8.;run;data d2;infile d:t
42、esttest2.dat data d2;infile d:testtest2.dat missovermissover;input age 2.sex$1.height 4.2 birthday yymmdd8.;run;input age 2.sex$1.height 4.2 birthday yymmdd8.;run;data d3;infile d:testtest3.dat;data d3;infile d:testtest3.dat;input age sex$height birthday yymmdd8.;input age sex$height birthday yymmdd
43、8.;run;run;39同济医学院同济医学院SAS数据步数据步3 3 数据来自已建立的数据来自已建立的SASSAS数据集数据集 利利用用SETSET语语句句,可可以以从从一一已已存存在在的的数数据据集集中中选选出出全全部部或或部部分分数数据据组组成成新新的的数数据据集集,或或对对数据作某种处理后写入新的数据集。数据作某种处理后写入新的数据集。格式:格式:DATA DATA 新数据集名;新数据集名;SET SET 原始数据集名;原始数据集名;其它语句;其它语句;RUNRUN;40同济医学院同济医学院SAS数据步数据步4.4.把其它系统的数据库转变成把其它系统的数据库转变成SASSAS数据数据E
44、xcel Excel 数据,数据,dBASE dBASE 数据,数据,Lotus Lotus 数据等数据等启动启动SASSAS系统,进入系统,进入SAS SAS 主窗口;主窗口;File File 中选择中选择ImportImport,进入,进入Import Wizard-Import Wizard-Select import type Select import type 窗口;窗口;在在 Import Wizard-Select import type Import Wizard-Select import type 窗口的文窗口的文件格式选择框中选择件格式选择框中选择“Execl5 or
45、 7 Spreatsheet Execl5 or 7 Spreatsheet(*.xls.xls)”,然后点击,然后点击“Next”Next”,进入,进入 Import Import Wizard-Select file Wizard-Select file 窗口;窗口;在在Import Wizard-Select file Import Wizard-Select file 窗口上点击窗口上点击“Browse”Browse”,进入,进入“打开打开”窗口;窗口;41同济医学院同济医学院SAS数据步数据步u在在“打开打开”窗口的窗口的“搜寻搜寻”框中选择文件框中选择文件abc.xls abc.x
46、ls 所在所在的目录的目录 D:D:和和D:D:中的文件包中的文件包testtest,然后在,然后在test test 文件包文件包中选择文件中选择文件abc.xlsabc.xls,当,当abc.xls abc.xls 出现在出现在“文件名文件名”框框中时,点击中时,点击“打开打开”,返回到,返回到Import Wizard-Import Wizard-Select file Select file 窗口;窗口;u在在Import Wizard-Select file Import Wizard-Select file 窗口上点击窗口上点击“Next”Next”,进入,进入Import Wiz
47、ard-Select library and Import Wizard-Select library and member member 窗口;窗口;u 在在librarylibrary选择框中选择选择框中选择SASSAS数据的数据的libnamelibname:testtest,然后在然后在member member 选择框中输入选择框中输入SASSAS数据的第一级名字:数据的第一级名字:abcabc,然后点击然后点击“Finish”Finish”。42同济医学院同济医学院SAS数据步数据步SASSAS数据的保存数据的保存临时数据集临时数据集 数据集名(数据集名(data set name
48、data set name),如,),如,abc1abc1永久数据集永久数据集 文件名由两部分组成:数据库逻辑名文件名由两部分组成:数据库逻辑名(libnamelibname)+数据集名(数据集名(data set data set namename),如,),如,test.abc1test.abc1。43同济医学院同济医学院SAS数据步数据步数据库逻辑名的创建数据库逻辑名的创建u用用SAS SAS 语句创建数据库逻辑名语句创建数据库逻辑名libname libname 数据库逻辑名数据库逻辑名 主目录主目录:子目录子目录;libname test d:test ;libname test d
49、:test ;data test.abc1;data test.abc1;input age sex$height birthday yymmdd8.input age sex$height birthday yymmdd8.;cards;cards;数据区数据区 ;runrun;44同济医学院同济医学院SAS数据步数据步u在在SAS SAS 的的Libraries Libraries 窗口上创建数据库窗口上创建数据库逻辑名逻辑名45viewexplorerlibrariesnew同济医学院同济医学院SAS数据步数据步如何建立永久数据集如何建立永久数据集 建立永久数据集的一般步骤:建立永久数据
50、集的一般步骤:(1 1)定义一个库逻辑名代替数据集存放的盘)定义一个库逻辑名代替数据集存放的盘符和目录符和目录(2 2)在)在datadata语句中用二级名命名数据集语句中用二级名命名数据集 (3 3)编写相应的数据步语语句并提交系统)编写相应的数据步语语句并提交系统运行。运行。46同济医学院同济医学院SAS数据步数据步三、数据集的修改与加工整理三、数据集的修改与加工整理 (一)赋值语句(一)赋值语句 利利用用赋赋值值语语句句,可可以以建建立立新新变变量量,或或者者修修改原变量的观测值。改原变量的观测值。语句格式:变量名语句格式:变量名=表达式表达式 (1 1)赋赋值值语语句句右右边边的的表表