《SAS编程基础》PPT课件.ppt

上传人:博****1 文档编号:576622135 上传时间:2024-08-20 格式:PPT 页数:68 大小:297.10KB
返回 下载 相关 举报
《SAS编程基础》PPT课件.ppt_第1页
第1页 / 共68页
《SAS编程基础》PPT课件.ppt_第2页
第2页 / 共68页
《SAS编程基础》PPT课件.ppt_第3页
第3页 / 共68页
《SAS编程基础》PPT课件.ppt_第4页
第4页 / 共68页
《SAS编程基础》PPT课件.ppt_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《《SAS编程基础》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《SAS编程基础》PPT课件.ppt(68页珍藏版)》请在金锄头文库上搜索。

1、第二章 SAS编程基础内容 SAS程序结构变量、常数、表达式和函数数据的输入数据的输出输入和输出的格数据及的操作变量的控制观测数据的管理条件语句与循环语句过程步的介绍一、SAS程序的结构 SAS的程序由若干个SAS语句(Statements)构成。 按结构和功能可以将SAS过程分为两个过程步。是数据步(DataSteps)用于数据集的产生、加工和整理。程序步(ProcSteps)用于数据的分析并在Output窗口输出结果。 一个SAS程序可以有一个数据步或一个程序步。也可以有一个数据步和多个程序步。也可以有多个数据步和程序步。1.SAS的语句基本规则 SAS的语句一般由SAS的关键词开始,以英

2、语的分号(;)结尾,语句中还包括SAS的变量、常数、运算符函数或一些特殊的字符(比如”$”)。基本规则: 语句可以在一行的任何地方开始; 一个语句可以分写为若干行; 多个语句可以写在同一行; 语句中各项之间以空格隔开; 不区分大小写。 在SAS语句中的注释语句为: /*注释内容*/或*注释内容。 数据步以DATA 语句开头,其后可以包括多个SAS语句。DATA语句是用来建立SAS的数据集。该语句后的其它语句均是用来输入数据和对数据进行修改和编辑等。数据步的一般形式为: data 数据集名;数据集名; 数据步语句;数据步语句; ; run;Run代表代表SAS的程序结束。一个程序可以有几个的程序

3、结束。一个程序可以有几个“run”,也可以只用一个,也可以只用一个“run“。 DATA D1; INPUT A B; CARDS; 3 5 7 9 ; RUN; 建建立立了了一一个个叫叫D1的的数数据据集集,有有变变量量A和和B,分分别别有有两个个案。两个个案。 DATA D2; INPUT C D; CARDS; 13 15 17 19 21 23 ; RUN; 【例】建立以下样本的SAS数据集姓名:name性别:xb年龄:age身高:high体重:weigt【例】 频数数据的组织方式频数数据的组织方式:居民储蓄问卷调查结果居民储蓄问卷调查结果年龄年龄收入收入人数人数24900635180

4、010372000930170011将此分组数据构造将此分组数据构造SAS的数据文件。的数据文件。data a;input x y f;cards;249006351800 10372000 9301700 11;proc means;freq f;run;2.过程步 过程步要求SAS从系统中调出一个SAS过程,这个过程对应某一种统计分析方法,并对指定的数据集执行该过程,过程步以proc开头,指出调用的过程名和要分析的数据集。其后利用一些语句来指定调用该程序的各个参数。Data=数据集名是可以选择的,如果缺省使用最近的数据集。 Proc 过程名 data=数据集名; 过程步语句; 过程步语句;

5、 ; Run;【例】 proc print data=a; run;简单打印的过程语句。 proc means data=a; run;计算描述统计量的过程。二、变量、常数、表达式和函数 1.变量 SAS的变量是用来表示统计数据的。在SAS中,每一列就是一个变量,列中的数据值就是变量值。 SAS变量的属性(Attributes),包括名称(name)、类型(type)、长度(length)、输入格式(informat)、输出格式(format)以及标签(label)。变量属数字范围缺省值控制语句名称命名规则无rename类型数值型和字符型数值型无长度数值型2-8个字节,字符型1-256个字节8

6、个字节Length语句标签1-256个字节无Label语句SAS变量属性 2.常数 SAS常数用来表示固定的值,包括数字、字 符数和一些特特殊的符号。 数值型常数:例如1,2,0.53,1.5E-5 字符串常数:例如SWUFE 日期时间型常数:在SAS中日期和时间均有特殊的储存方式。 date=10APR2012d;data a;date=10APR2012d;input x date12.;cards;10/APR/2012 ;proc print;FORMAT x WORDDATE.;FORMAT date WORDDATE.;run; SAS的日期是从1960年1月1日起的整天数。计算2

7、013年国庆的日期值。您的生日的日期值。data a;input x;cards;10903;proc print;FORMAT x date8.;run;3.表达式 表达式由运算符号和运算对象组成。执行后产生一个目标值。运算符号包括算术运算符号、比较运算符号、逻辑运算符号、函数和括号等。 【例】 假设我们有工人的年龄(age)和工龄(gl)两个变量,现在要计算工人的入厂年龄(rc)。Data a; Input age gl; rc=age-gl; Cards; 56 32 36 12 ; Proc print;Run; data a; Input age gl; rc=age-gl; old

8、=sign(age55); cards; 56 32 36 12 57 26 32 6 ; proc print; run;运算的符号与含义*乘方|连接+正=等于-负=不等于非大于最大=大于等于*乘=小于等于/除&与+加|或-减 4.SASSAS的函数的函数 SAS的功能非常强大和全面,这一点在函数上得到了极为充分的体现,SAS中共有25大类函数,功能涉及到文件管理、金融、数学计算、统计计算、字符串处理、货币转换等各个方面。因篇幅限制,这里无法将数百种函数一一解释,只列举出较为常用的函数。ABS(X)求求x的的绝对值MAX(X,Y,Z)求一串数中最大的一个,例如求一串数中最大的一个,例如MAX

9、(1,2,3,4)=4。MIN(X,Y,Z)求一串数中最小的一个,例如求一串数中最小的一个,例如MIN(1,2,3,4)=1。MOD(X,Y)求求X除以除以Y的余数,例如的余数,例如MOD(9,5)=4SIGN(X)计算算X的符号,的符号,结果果为1,、-1或或0。SIGN(X) 称称为为符号函数,符号函数,如果如果 括号里面的括号里面的x是正的,是正的,则则得得1,括号里面,括号里面x是是负负的的则则得得-1,括号里面的,括号里面的x是零,是零,则则得得0。SQRT(X)求求X的平方根。的平方根。第一类第一类 算术函数算术函数DIM(X)求数求数组中的元素个数,中的元素个数,X为数数组名,名

10、,n为该数数组的的维数数DIM(X, n)求多求多维数数组的某一的某一维中的元素个数,中的元素个数,X为数数组名,名,n为指定的指定的维数数HBOUND(X)求数求数组的上界的上界HBOUND(X,n)求多求多维数数组中的某一中的某一维的上界,的上界,X为数数组名,名,n为指定的指定的维数数LBOUND(X)求数求数组的下界的下界LBOUND(X,n)求多求多维数数组中的某一中的某一维的下界,的下界,X为数数组名,名,n为指定的指定的维数数 SAS函数是SAS系统提供的子程序。 格式为: 函数名(自变量1,自变量2,) 函数名(of 变量列)data a;input x y;sum=sum(x

11、,y);cards;1 2 3 4 5 6;run;三、数据输入 1.数据源和数据步形式数据源和数据步形式 在数据量不大时,一般可以在程序编辑器窗口将数据行和SAS程序写到一起,完成数据的输入。一般形式为:data 数据集名;数据集名; input 变量名列;变量名列; cards; 数据行数据行 ; run; 其中,input语句用来读入数据,它根据数据行形式的不同采用不同的语句格式,cards语句可以用datalines语句,该语句的含义是提示SAS系统下面紧跟的是数据行。 Input语句有三种输入数据格式:列表输入列表输入列输入列输入格式化输入格式化输入 2.按列输入 对于严格排列好的标

12、准数据,才采用按列对于严格排列好的标准数据,才采用按列输入。输入。 input 变量名 起始列数; Input name $1-10 num 11-18;cards;zhang san 20051001Lisi 20052002;Run;Run;3.列表输入 在在Input语句中仅列出变量名;数据仅需用空格分割,语句中仅列出变量名;数据仅需用空格分割,不必列对齐。不必列对齐。基本格式 Input 变量名 ;【例】 Input name$ sex$ age h w; 其中表示一个数据行只能读入一个观测, 表示一个数据行可以读入多个数据,按顺序读完。4.格式化输入 格式化输入:在Input 语句中

13、,变量名后给出一个输入格式,输入格式用来说明变量的数据类型和字段的宽度;在数据中,数据一般要求列对齐,不必用空格隔开。 例:字符格式:Input name $ 10. ; 数值格式:Input h 4.2 ; 日期格式:mmddyy10. date12.例:Data a;Input d mmddyy10. d2 date12. ;cards;10/19/05 19/Oct/2005; Input h 4.2 ;的含义是输入的数据是占4个有效数字,小数点两位。 Input d mmddyy10. d2 date12. ;输入的数据是两种日期数据格式。即从1960年1月1日开始计算的整天数。 da

14、ta a;Input d mmddyy10. d2 date12.;cards;11/01/2013 11/jul/2013;run;proc print;run; MMDDYY8. (01232013)格格式式读读入入日日期期值值时时,日日期期值值最最长长占占8列列。如如格格式式给给出出的的长长度度不不足足,则则会会出出现现数数据据截截尾尾。DATE10. 格格式式是是按按ddmmmyy的的格格式式读读入入数数据据的的,最最长长可可读读入入10列。列。 简简化化输输入入:如如有有X1,X2.X10十十个个字字符符型型量量的的值值紧紧挨挨在在一一起起,每每个个量量长长度度为为3, 则则 :IN

15、PUT (X1-X10) ($3.);四、数据输出1.输出数据到输出数据到SAS窗口窗口直接使用PUT语句,可以将数据输出到SAS系统的系统的log窗口;窗口;SAS系统的系统的OUTPUT窗口;窗口; 在put语句前利用file语句,标识名的选择为:log和print。若标识为log,表示输出在日志窗口,如果标识为print,则输出现实在输出窗口,此时put语句将结果打印到输出窗口。data a;input x y z;file print;put x y z;cards;1 2 53 4 74 5 8;run;data a;input x y z;file log;put x y z;ca

16、rds;1 2 53 4 74 5 8;run;2.输出到外部文件 联合使用PUT和FILE语句,可以实现将数据输出到外部文件。其中,FILE语句用于定义要输出外部文件。其语句格式为: FILE 文件路径; 文件路径包括完整的路径和文件名。选项用来控制输出数据如何被写入到输出文件中。 put语句用来实现数据输出。data a;input x y z;file “c:sasdata.out;put x y z;cards;1 2 53 4 74 5 8;run; 在SAS的子目录里有一个文本文件,扩展名为out。是三行数据 。将其读入:将其读入:data a2;infile c:SASdata.

17、out;input x y z;proc print data=a2;run;3.输出数据到SAS永久数据集libname study c:sasmydata; data study.a; input x y z; cards; 1 4 5 2 6 9 9 12 11 ;Run;读入SAS内部永久数据集libname studyc:sasmydata;proc print data=study.a;run;五、数据集的操作 1.SET语句 SET语句是数据集操作中的一个基本语句,用于从一个或多个数据集中读取观测数据,生成一个新的数据集。SET语句的基本格式为: SET 数据集名 ; 在SET语

18、句中,数据集可以有一个或多个。如果数据集名只有一个,则直接从该数据集继承数据。如果数据集有多个,则应该考虑采用何种方式将这些数据集串联起来。 在SET语句中,每个数据集名后面的选项用来规定在读入该数据集时对变量或观测进行相关的操作,如果没有数据集名后面的选项,则读入数据集中所有的变量和观测。选项与说明选项说明Keep变量名规定读入数据集时规定保留的变量。Drop变量名规定读入数据集时规定删除的变量。Rename 旧变量名新变量名对变量重新命名。Where(表达式)读入满足表达式的观测Firstobsn规定从数据集中的第n行开始读入观测数据Obsm规定从数据集中的第m行结束读入观测数据3.数据集

19、的串联(纵向合并) (1)简单串联 简单串联就是将所有要合并的数据集简单叠放在一起。 data 新数据集名; set 数据集名1(选择表达式 )数据集名2 (选择表达式 ). . .; run; 可以附加选项来规定在读入该数据集时对变量和观测进行选择和删除。并包含所有的变量。如果某个数据集的没有此变量,则认为是缺失值。DATA SCORE1; INPUT NUM S1-S3; CARDS; 1001 78 89 92 1002 87 92 97 1003 64 74 88 ; DATA TOT; SET SCORE1; TOTAL=SUM(OF S1-S3); PROC PRINT; RUN;

20、 data a;input x y;cards;1 27 89 12;data b;input x;cards;34125678;data c;set a (drop= y) b;run;proc print data=c;run; (2)排序串联 如果各个数据集串联后需要按某个变量进行排序,除了使用set语句,还要使用by语句。 data 新数据集名; set 数据集名1 数据集名2 . . .; by 变量名; run;4.数据集的并联(横向合并) 1.简单并接 数据集的并接是指将多个数据集横向合并起来,即新的数据集增加。 data a; merge 数据集名1 数据集名2 ; run;

21、如果不匹配会有缺失值。(2)匹配并联 匹配并接是将两个或两个以上的数据集按照某个变量进行并接。为了进行匹配并接各个数据集都至少有一个相同的变量。 data a; merge 数据集名1 数据集名2 ; by 变量名; run;data a;input num$ x ;cards;01 1 02 203 7 04 805 9 06 12;data b;input num$ y;cards;01 3402 1203 5604 78;data r;merge a b;by num;proc print data=r;run; 七、变量的控制1. DROP 语句语句 格式格式: DROP 变量表变量表

22、; DROP语语句句指指明明某某些些变变量量不不包包括括在在建建立立的的数数据据集集中中。但但是是这这些些变变量量可可在在该该数数据据步步的的所所有有编编程程语语句句中中使使用用 。在在 DATA步步中中,DROP语语句句位位于于任任何何地地方方所所产产生生的的效果都相同。效果都相同。DATA PARTS; INPUT NAME $ S1 S2; TOTAL=S1+S2 DROP S1 S2; CARDS; zhanglin 78 89 wangqiang 95 87 2. KEEP 语句语句格式格式: KEEP 变量表变量表;如:如:KEEP NAME AVG; KEEP语语句句说说明明在在

23、正正被被建建立立的的数数据据集集中中包括哪些变量。包括哪些变量。在在KEEP语语句句中中不不包包括括的的变变量量仍仍适适用用于于其其它它程程序序语语句句。KEEP语语句句可可出出现现在在DATA步步的程序语句中的任何位置,它是非执行语句。的程序语句中的任何位置,它是非执行语句。KEEP语语句句的的作作用用与与DROP语语句句正正相相反反。在在同同一一DATA步步中中,不不要要同同时时使使用用KEEP语语句句和和DROP语句。语句。 3. LENGTH 语句语句 当当一一个个字字符符型型变变量量长长度度超超过过或或不不用用缺缺省省值值时时,可用该语句指出变量的长度。可用该语句指出变量的长度。 如

24、如: DATA A; LENGTH NAME $ 13; INPUT NAME SEX $ H W; CARDS; ZhangZhihui F 1.70 52 ZhaoChangtai M 1.73 55 ; 由由于于NAME变变量量已已在在LENGTH语语句句中中定定义义为为字字符型量符型量,故故INPUT语句中可不再用语句中可不再用$号作定义。号作定义。 4. LABEL 语句语句变变量量名名不不许许超超过过8个个字字符符长长。使使用用LABEL语语句句给给变变量量一一个个标标记记,标标记记长长可可达达40个个字字符符。 它它与与变变量量值值同同时时存存于于数数据据集集中中, 它它可可以以

25、被被许许多多SAS过程打印出来。过程打印出来。 DATA D; INPUT NUM $ SEX $ H W; LABEL H=HEIGHT W=WEIGHT; CARDS; 101 M 1.72 61 102 F 1.68 52 ; PROC PRINT LABEL; 注注意意: PRINT过过程程的的PROC PRINT语语句句中中应加应加LABEL选择项。选择项。指定变量的输出格式。指定变量的输出格式。 对于日期时间型变量必须指定其格式。如对于日期时间型变量必须指定其格式。如: DATA EMPLO; INPUT NAME $ T DATE7.; FORMAT T WORDDATE.; C

26、ARDS; ZHONGLI 15JAN84 LIUWEI 03MAR85; PROC PRINT;Run;FORMAT语语句句把把SAS输输出出格格式式WORDDATE. 变变量量T联联系起来。系起来。 5. FORMAT 语句语句data time;x=date();format x yymmdd8.2;put x=;run;给出今天的日期。 timepart函数函数 计算日期值的时间部计算日期值的时间部分。分。data time;input x datetime18.;format x datetime18.;cards;29nov2012:09:25:0003dec2012:10:23:

27、50;proc print data=time;run;data time2;set time;y=timepart(x);format y time8.;run;proc print data=time2;run;6. MISSING 语句语句格式格式: MISSING values;MISSING语语句句表表明明:在在录录入入的的数数据据中中的的某某些些值代表数值型数据的缺项值。值代表数值型数据的缺项值。 例例如如,假假设设字字母母 “A”代代表表在在调调查查时时家家中中无无人人, 字母字母“R”代表拒绝回答。代表拒绝回答。 DATA SURV; MISSING A R; INPUT ID

28、 ANSWER ; CARDS; 1001 2 1002 R 1003 1 1004 A 1005 2 ; MISSING语语句句规规定定,在在录录入入的的数数据据行行中中,值值 A和和R 被被认认为为是是特特殊殊的的缺缺项项值值, 而而不不是是无无效效的的数数值值型数据值。型数据值。 7.注释语句注释语句 在在语语句句开开头头加加一一个个星星号号,就就表表示示该该语语句句的的内内容是注释信息而不予执行。容是注释信息而不予执行。如:如: *-example-; data; label n=name h=height; input num n $ h; cards ; 1001 zhang3 1

29、.73 1002 li4 1.82 ; 对对于于大大段段信信息息的的注注释释,可可用用/*放放在在信信息息的的开开头头,将将*/放在注释信息的尾部。放在注释信息的尾部。八、过程步介绍1.过程步语句一些最基本的过程步语句语句功能PROC规定要运行的过程VAR规定过程中要分析的变量MODEL 规定模型的因变量和自变量WEIGHT规定权数变量FREQ规定频数变量ID规定用于识别观测的变量最为标签SHERE选择满足条件的观测语句功能CLASS规定分类变量BY规定分组变量OUTPUT规定输出过程中产生的数据集2.Print语句 打印数据集的数据与output窗口。3.Sort过程 SAS中有许多与BY语

30、句配合使用的语句,在使用之前均要对数据集进行配需。一般用SORT语句进行排序。SORT过程的语句格式: proc sort data=数据集名 ; by 变量名; run;说明:(1)proc语句规定开始运行sort过程必须制指定要排序的数据集名; (2)在sort语句中必须使用by语句,用来规定要进行排序的变量。 Descending置于变量名前,是制定是升序还是降序排列,默认是升序。4.TRANSPOSE过程 TRANSPOSE过程是对数据集进行转置的过程。语句格式: proc transpose data=数据集名 ; var 变量名列表; id 变量名; idlabel 变量名; copy 变量名列表; by 变量名列表;Run;语句说明: (1)proc语句规定开始运行transpose过程,同时指定要转置的数据集名; (2)var语句规定原数据集中要转置的变量。如果不指定则只转置数值型变量。不对字符型变量转置; (3)ID语句规定原数据集中的一个变量,该变量的值为转置后数据集中的变量名。 (4) IDLABEL语句用来规定一个变量为转置后的数据集提供标签。 (5)copy语句对列出的变量不进行转置而是直接复制到输出的数据集中。 (6)by语句规定对每个by分组内的数据进行转置,但是by变量不进行转置而直接复制到输出数据集中。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号