统计软件及应用数据步课件.ppt

上传人:M****1 文档编号:568592701 上传时间:2024-07-25 格式:PPT 页数:84 大小:1.39MB
返回 下载 相关 举报
统计软件及应用数据步课件.ppt_第1页
第1页 / 共84页
统计软件及应用数据步课件.ppt_第2页
第2页 / 共84页
统计软件及应用数据步课件.ppt_第3页
第3页 / 共84页
统计软件及应用数据步课件.ppt_第4页
第4页 / 共84页
统计软件及应用数据步课件.ppt_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《统计软件及应用数据步课件.ppt》由会员分享,可在线阅读,更多相关《统计软件及应用数据步课件.ppt(84页珍藏版)》请在金锄头文库上搜索。

1、统计软件SAS及应用-Focus 编程技术张媛媛 2010年11月SAS的主要功能p获取数据获取数据p管理数据管理数据p分析数据分析数据p表示数据表示数据p应用软件开发应用软件开发总结:Data步直接输入数据Libname Libname 数据库名数据库名 引擎引擎 ; ;DATADATA SAS SAS数据集名数据集名; 语句语句设定变量属性设定变量属性; INPUTINPUT 语句语句;其他其他SASSAS语句语句; CARDSCARDS; ;RUNRUN;Length, Label, Informat, Format, Attrib语句句四种输入格式:四种输入格式:按列输入(按列输入(C

2、olumnColumn)格式化输入(格式化输入(FormatFormat)自由列表输入(自由列表输入(ListList)命名输入模式(命名输入模式(NameName)两级两级命名方式两级两级命名方式SAS数据集命名方式SASSAS数据集数据集采用两级命名方式定名:采用两级命名方式定名:Libname . SAS-filenameLibname . SAS-filename(库标记(库标记 . . 文件名)文件名)如:名为如:名为 DST2 . FISH DST2 . FISH 的数据集的数据集默认为默认为WORKWORK,即临时数据,即临时数据集只要有数据集名即可集只要有数据集名即可数据集的名

3、字由英文字母、数字、下划线组成,第一个字母数据集的名字由英文字母、数字、下划线组成,第一个字母必须是字母或下划线,名字最多只能有必须是字母或下划线,名字最多只能有8 8 个字符;另外在命个字符;另外在命名时不区分大小写。名时不区分大小写。Examplep希望把希望把F:My SAS FilesV8new F:My SAS FilesV8new 这个目录与一个这个目录与一个名叫名叫libtestlibtest 的的数据库数据库联系起来,并且将联系起来,并且将test test 数数据集据集放置在其中。可以在编辑窗口输入如下的程放置在其中。可以在编辑窗口输入如下的程序:序:libname libt

4、est f:my sas libname libtest f:my sas filesv8new;filesv8new;data libtest.test;data libtest.test;input code price;input code price;cards;cards;600381 18600381 18600262 16600262 16600252 8600252 8600009 10600009 10600036600036; ;run;run;SAS读写规则p读取规则:读取规则:informatinformat或或inputinput语句指定语句指定p存储规则:存储规则:

5、lengthlength语句指定语句指定p输出规则:输出规则:formatformat(数据集)或(数据集)或putput语句语句( (日志)日志)指定指定p读取规则主要指定两个方面:读取规则主要指定两个方面:开始读取位置开始读取位置结束读取位置或读取字符长度结束读取位置或读取字符长度指定读取规则的方式指定读取规则的方式p开始读取位置:一般情况下是前一个变量结束读开始读取位置:一般情况下是前一个变量结束读取位置的后一列,存在一种取位置的后一列,存在一种特殊情况特殊情况(:/&)(:/&)p结束读取位置:开始读取非空格数据后遇到的第结束读取位置:开始读取非空格数据后遇到的第一个空格所在列作为结束

6、读取位置一个空格所在列作为结束读取位置开始列开始列结束列结束列默认默认指定始列/绝对指针控制指定终列相对指针控制+指定读入字符数注意:注意:1 1、指定开始列碰见、指定开始列碰见:/&:/&格式修饰符时取最大格式修饰符时取最大2 2、指定读入字符数碰见、指定读入字符数碰见:/&:/&格式修饰符时取最小格式修饰符时取最小例input x $ y &$5.;cards; abc de fghj ;input x $ 6 y &$5.;cards;abc de fghj ;input x $ 9 y &$5.;cards; abc de fghj ;input x $ 10 y &$5.;cards

7、; abc de fghj ;y=e fy=fgh注意p对于对于字符字符型变量,型变量,lengthlength语句的位置很重要语句的位置很重要data a;data a;length x $3;length x $3;input x $4. y $;input x $4. y $;put x= y=;put x= y=;cards;cards;abcd cdefabcd cdefabc deabc de ; ;run;run;data a;data a;input x $4. y $;input x $4. y $;length x $3;length x $3;put x= y=;put

8、x= y=;cards;cards;abcd cdefabcd cdefabc deabc de ; ;run;run;WARNING: WARNING: 字符变量字符变量 x x 的长度已经设置。的长度已经设置。使用使用 LENGTH LENGTH 语句作为语句作为 DATA STEP DATA STEP 中的第一个中的第一个语句可以声明字符变量语句可以声明字符变量的长度。的长度。DATA步执行阶段p在执行期间,在执行期间,SASSAS系统执行以下步骤:系统执行以下步骤:( (除非另有除非另有指向指向) )1 1)PDVPDV中所有的变量值被初始化为缺失值;中所有的变量值被初始化为缺失值;2

9、 2)输入缓冲器据)输入缓冲器据inputinput语句的数据需求语句的数据需求, ,读入源数据文读入源数据文件的相应记录行件的相应记录行, , 并写相应的数据字段到并写相应的数据字段到PDV;PDV;3 3)每个语句被顺序执行)每个语句被顺序执行, ,并可修改并可修改PDVPDV形成当前观测形成当前观测; ;4 4)数据步语句一遍执行后)数据步语句一遍执行后, PDV, PDV中的值写入数据集中的值写入数据集;*;*5 5)PDVPDV中外部变量初始化为确失值中外部变量初始化为确失值, ,程序流程回到程序流程回到2 2); ;6 6)对数据源文件的每条记录都按上面步骤执行一次;)对数据源文件

10、的每条记录都按上面步骤执行一次;7 7)重复以上步骤直到外部文件中数据结束。)重复以上步骤直到外部文件中数据结束。DATA步的工作流程数据步开始数据步开始有未读入的观测值吗?有未读入的观测值吗?用数据读入语句读入一个观测值用数据读入语句读入一个观测值用其它语句对观测值进行运算或处理用其它语句对观测值进行运算或处理把当前的观测值写入数据集把当前的观测值写入数据集数据集建立完毕,开始下一个数据集建立完毕,开始下一个数据步或过程步数据步或过程步Y YN NInput语句后的单尾符p一个数据步内可以有多条一个数据步内可以有多条inputinput语句。但是当执行完语句。但是当执行完一条一条inputi

11、nput语句后语句后, ,一般将放弃缓冲区内现有源数据一般将放弃缓冲区内现有源数据行行, ,而从源文件中再取一条记录更新缓冲区。若要保而从源文件中再取一条记录更新缓冲区。若要保持现有源数据行供下一条持现有源数据行供下一条inputinput使用其数据使用其数据, ,则应在则应在inputinput语句的最后加入语句的最后加入 跟踪符。跟踪符。例:例:data tmp1;input x;input y;cards;11 22 3344 55 66;run;data tmp2;input x;input y;cards;11 22 3344 55 66;run;data tmp3;input x;

12、input y;cards;11 22 3344 55 66;run;Input语句后的双尾符p一般情况下一般情况下, ,当程序执行到数据步底部后当程序执行到数据步底部后, ,也会从源数也会从源数据文件中另取一行记录来更新缓冲区内原有数据。据文件中另取一行记录来更新缓冲区内原有数据。若要缓冲区内原有数据不放弃若要缓冲区内原有数据不放弃, ,使其在数据步的下一使其在数据步的下一循环中仍可用循环中仍可用, ,则应在则应在inputinput语句最后加上语句最后加上跟踪符。跟踪符。例:例:datatmp5;datatmp5;inputxy;inputxy;cards;cards;1122331122

13、33445566445566; ;run;run;datatmp6;datatmp6;inputxy;inputxy;cards;cards;112233112233445566445566; ;run;run;datatmp7;datatmp7;inputa;inputa;inputxy;inputxy;cards;cards;112211223344556633445566; ;run;run;datatmp8;datatmp8;inputa;inputa;inputx1-2y;inputx1-2y;if_n_=10thenstop;if_n_=10thenstop;cards;cards

14、;112211223344556633445566; ;run;run;源数据的指针控制p当当SASSAS从数据行中读取数据时,它用指针来跟踪当前数从数据行中读取数据时,它用指针来跟踪当前数据的位置;指针控制符可为据的位置;指针控制符可为inputinput语句指示数据源中当语句指示数据源中当前数据所在的行、列位置。前数据所在的行、列位置。p列指针控制符列指针控制符列指针控制符列指针控制符“+n+n”表示指针右移表示指针右移n n列列(n(n为负则左移为负则左移n n列列) );列指针控制符列指针控制符“nn”表示指针移到第表示指针移到第n n列列( (绝对位置绝对位置) );列指针控制符列指

15、针控制符“ character-stringcharacter-string”表示把指针移到表示把指针移到数据行中字符串数据行中字符串character-stringcharacter-string后第一个非空格列。后第一个非空格列。p行指针控制符行指针控制符行指针控制符行指针控制符“#n#n”表示指针移到第表示指针移到第n n行行;(;(当一条观测有几当一条观测有几行源数据时行源数据时, ,起作用起作用) ) 行指针控制符行指针控制符“#(expression)#(expression)”表示指针移到表达式的值表示指针移到表达式的值(必须为整数)所指的行。(必须为整数)所指的行。行指针控制符

16、行指针控制符“/ /”表示指针移到下一行的第一列。表示指针移到下一行的第一列。指针控制符用法示例行指针用法示例行指针用法示例: :data tmp1;data tmp1;input name:$10. input name:$10. age / score1-age / score1-score3;score3;cards;cards;zhangsan 12zhangsan 1288 98 6788 98 67lisi 13lisi 1377 98 8677 98 86;run;run;列指针用法示例列指针用法示例1:1:data tmp2;data tmp2;m=-1;/*m=-1;/*左移

17、一列左移一列* */ /input x 1-4 +m y input x 1-4 +m y 2 id$2.;2 id$2.;/*drop m;*/ /*drop m;*/ cards;cards;123451234524680246801357913579;run;run;列指针用法示例列指针用法示例2:2:data tmp3;data tmp3;input id $2. age input id $2. age 3-4 size= 3-4 size= x;x;list; list; cards;cards;0116size=54.230116size=54.230215size=45.660

18、215size=45.661318size=61.011318size=61.01;run;run;Cards/Cards4语句pCARDSCARDS语语句句或或DATALINESDATALINES语语句句告告诉诉SASSAS系系统统下下面面跟跟着着的的是是数数据行。据行。p数据行之前用数据行之前用CARDSCARDS语句或语句或DATALINESDATALINES语句。语句。语句格式:语句格式:CARDSCARDS;或或DATALINESDATALINES; 数据行数据行 数据行之前用数据行之前用CARDSCARDS语句。语句。 datadata; ;inputinput var1 var2

19、 var3 $; var1 var2 var3 $;cardscards; ;16 20 First16 20 First; ;Cards/Cards4语句p数据行数据行中含有中含有分号分号时,必须用时,必须用CARDS 4CARDS 4或或DATALINES4DATALINES4语句。语句。语句格式:语句格式:Cards 4; Cards 4; 或或DATALINES4DATALINES4; 数据行数据行 ;数据行中含有分号时用数据行中含有分号时用CARDS4CARDS4语句。语句。datadata; ;inputinput var1$ var2$ var3 $; var1$ var2$ v

20、ar3 $;cards4cards4; ;A ; BA ; B( ; )( ; );例data a;input x $ y $;put x= y=;cards4;abcd; cdefabc; de;run;data a;input x $ y $;put x= y=;cards4;abcd;cdefabc;de;run;使用DATA步新建数据集数据存于纸上数据存于纸上(需直接键入)(需直接键入)编程:用编程:用DATA语句语句数据存于文本数据存于文本文件文件data SAS-data-set;data SAS-data-set;变量属性设定语句变量属性设定语句; ;infile filenam

21、e option;infile filename option;input input 变量输入设定;变量输入设定;其他其他SASSAS语句;语句;runrun;data SAS-data-set;data SAS-data-set;变量属性设定语句变量属性设定语句; ;inputinput变量输入设定;变量输入设定;其他其他SASSAS语句;语句;cards;cards;原始数据原始数据; ;runrun;自文本数据文件生成SAS数据集以以文本方式文本方式存放待生成存放待生成SASSAS数据集数据集的数据文件的数据文件要求要求:DATA DATA SASSAS数据集名数据集名; ATTRIB

22、ATTRIB语句语句设定变量属性设定变量属性; INFILEINFILE 文件名文件名 FIRSTOBS=n1 FIRSTOBS=n1 OBS=n2OBS=n2; INPUTINPUT 语句;语句;其他其他SASSAS语句语句;RUNRUN;datadata CHILD; CHILD; infileinfile “C:SUNNYC:SUNNY例题数据资料例题数据资料CHILD.TXTCHILD.TXT”; ; inputinput ID X1 $ X2 X3 X4ID X1 $ X2 X3 X4; ;runrun; ; 应用举例应用INFILE语句导入外部数据文件的标准程序 data deli

23、nfo(label=退市信息|delist information);format stkcd $6. lstknm $12. lstdt yymmdd10. delistdt yymmdd10. exchflg $1.stktype $1. ;informat stkcd $6. lstknm $12. lstdt yymmdd10. delistdt yymmdd10. exchflg $1.stktype $1. ;labelstkcd=股票代码|stock codelstknm=最新股票名称|latest stock namelstdt=股票上市日|list datedelistdt=

24、退市日期|delist dateexchflg=交易所标识|exchange flagstktype=股票类型|stock type;infile d:resdatdelinfo.txt delimiter=09x missover dsd firstobs=2;input stkcd $6. lstknm $12. lstdt yymmdd10. delistdt yymmdd10. exchflg stktype 1. ;run;例中,09x是TAB的十六进制表示,这里规定delimiter=09x是不能去掉的,去掉的话就出错了。由于文本数据不规则,须中或:控制变量delistDt. In

25、file选项说明pINFILE语句用来定义一个外部数据文件,文件中的数据用语句用来定义一个外部数据文件,文件中的数据用INPUT语句读取。外部文件可以是已存在的磁盘文件,也语句读取。外部文件可以是已存在的磁盘文件,也可以是从键盘上输入的数据行。可以是从键盘上输入的数据行。p语句格式语句格式 INFILE file-specification ; lfile-specification选项说明:选项说明:EXTERNAL FILE规定一个外部文件的完整路径和文件名。规定一个外部文件的完整路径和文件名。CARDS|CARDS4|DATALINES|DATALINES4选项指明输入数据为选项指明输入

26、数据为CARDS(CARDS4, DATALINES, DATALINES4)后面的数据流,后面的数据流,而非来自外部数据文件。而非来自外部数据文件。 loption-list选项说明(部分):选项说明(部分): 选项选项说明说明DELIMITER= string-in-DELIMITER= string-in-quotation-marks |quotation-marks | character-variable/ DLM= character-variable/ DLM=指定列表输指定列表输入入时所用的分隔符,缺省情况下时所用的分隔符,缺省情况下为空格。为空格。DSDDSD规定若一个数据

27、由引号括起,则规定若一个数据由引号括起,则SASSAS认为其认为其包含的逗号是字符数据。包含的逗号是字符数据。设定缺省分隔符为逗号。设定缺省分隔符为逗号。两个连续分隔符中间数据为缺失。两个连续分隔符中间数据为缺失。读入时去掉数据的引号。读入时去掉数据的引号。END=variableEND=variable定义一个变量标记是否已经到达输入文件的定义一个变量标记是否已经到达输入文件的结尾。结尾。FIRSTOBS=record-numberFIRSTOBS=record-number规定从该记录行开始读入规定从该记录行开始读入MISSOVERMISSOVER阻止阻止INPUTINPUT语句从下一个数

28、据行读入数据,语句从下一个数据行读入数据,未赋值未赋值的变量设为缺失。的变量设为缺失。OBS=record-number | MAXOBS=record-number | MAX规定要读入的记录数规定要读入的记录数. .Delimiter=选项应用data a;infile cards delimiter=,;input x y z;cards;3,6,91,3,58,8,8;例中,要输入的数据用逗号分隔,创建例中,要输入的数据用逗号分隔,创建SAS数据集时用选项数据集时用选项DELIMITER=,。 数据集数据集a axyz136921353888DSD选项应用data scores;inf

29、ile datalines delimiter=,;input test1 test2 test3;datalines;91,87,9597,92, 1 , 1;例中,分隔符为逗号,但第二个观测值的两个相邻分隔符之间还有缺失值,例中,分隔符为逗号,但第二个观测值的两个相邻分隔符之间还有缺失值,没有没有DSD选项时,这两个相邻的分隔符组成一个分隔符,于是,输入数据时选项时,这两个相邻的分隔符组成一个分隔符,于是,输入数据时会出错。会出错。 test1test2test31918795297921DSD选项应用上例加上上例加上DSDDSD选项,选项,将两个相邻分隔符之间的数作为缺失值处理将两个相邻

30、分隔符之间的数作为缺失值处理 data scores;infile datalines delimiter=, DSD;input test1 test2 test3;datalines;91,87,9597,92, 1 , 1;通常情况下,同时加上通常情况下,同时加上MISSOVERMISSOVER和和 DSDDSD两个选项是良好的编程两个选项是良好的编程习惯。习惯。 test1 test2 test31918795297.922.11Missover选项应用data a;input x $ y $;put x= y=;cards;abcd cdefabc de;run;data a;inf

31、ile cards missover;input x $ y $;put x= y=;cards;abcd cdefabc de;run;SAS数据集的建立数据存于纸上数据存于纸上(需直接键入)(需直接键入)数据存于文本数据存于文本文件文件数据存于流行数据数据存于流行数据库文件中库文件中用用VIEWTABLE、FSEDIT、FSVIEW编程:用编程:用DATA语句语句用用Import菜单菜单用用SAS/ACCESS访问外部数据文件pSASSAS系统访问的外部文件可以分为两类:系统访问的外部文件可以分为两类: PC PC格式的数据文件;格式的数据文件; 流行数据库流行数据库( (DBMS)DBM

32、S)文件。文件。 常用的访问外部文件的方法使用使用ImportImport菜单由文本文件读入菜单由文本文件读入从从SASSAS下拉菜单选择:下拉菜单选择:FileFile Import DataImport Data,按提示逐步,按提示逐步转换外部文件为转换外部文件为SASSAS数据集数据集而由而由File Export DataFile Export Data,则可,则可按提示将按提示将SASSAS数据集转换为外部文件数据集转换为外部文件在在WindowsWindows操作系统中,外部文件是指文本文件操作系统中,外部文件是指文本文件(格式为(格式为 .dbf.dbf、.xls.xls、.wk

33、1.wk1、.wk3.wk3等);等);对一些用户规定格式的文件可提供对一些用户规定格式的文件可提供EFIEFI(External External File InterfaceFile Interface外部文件界面)。外部文件界面)。练习p通过infile语句导入class.txt文件中的第三行以后的所有数据。p通过菜单操作导入class.txt文件、fitness.xls文件中的数据。使用DATA步新建数据集数据存于纸上数据存于纸上(需直接键入)(需直接键入)编程:用编程:用DATA语句语句数据存于文本数据存于文本文件文件data SAS-data-set;data SAS-data-s

34、et;变量属性设定语句变量属性设定语句; ;infile filename option;infile filename option;input input 变量输入设定;变量输入设定;其他其他SASSAS语句;语句;runrun;data SAS-data-set;data SAS-data-set;变量属性设定语句变量属性设定语句; ;inputinput变量输入设定;变量输入设定;其他其他SASSAS语句;语句;cards;cards;原始数据原始数据; ;runrun;其他SAS语句pSASSAS表达式表达式p数据步中的常用语句数据步中的常用语句SAS表达式SASSAS数据步数据步程

35、序中的计算由程序中的计算由SASSAS表达式表达式完成完成; ; SASSAS表达式表达式通过通过运算符运算符、括号括号等,将调用的等,将调用的常量常量、变量变量和和函数函数连接起来,得到一个计算结果。连接起来,得到一个计算结果。SAS运算符SASSAS运算符运算符包括包括算术算术、比较比较和和逻辑逻辑等运算符。等运算符。 算术运算符算术运算符 作用作用 举例举例 + + 加法加法 sum=x+y;sum=x+y; - - 减法减法 diff=x-y;diff=x-y; * * 乘法乘法 mult=x*y;mult=x*y; / / 除法除法 divide=x/y;divide=x/y; *

36、* 幂运算幂运算 raise=x*y;raise=x*y; | | 字符串拼接字符串拼接 str=str1|str2;str=str1|str2;SAS运算符比较比较运算符运算符运算符运算符 符号符号 意义意义逻辑逻辑运算符运算符 LT LT GT 大于大于(greater than)(greater than) EQ = EQ = 等于等于(equal)(equal) LE = LE = GE = 大于等于大于等于(greater (greater equal) equal) NE = NE = 不等于不等于(not equal)(not equal) IN IN 等于列举中的一个等于列举中

37、的一个 AND & AND & 并且并且OR | OR | 或者或者NOT NOT 非非SASSAS运算符包括运算符包括算术算术、比较比较和和逻辑逻辑等运算符。等运算符。SAS运算符p运算符运算符ININ是一个是一个SASSAS特有的比较运算符,用来检查特有的比较运算符,用来检查某个变量的取值是否在一个给定列表中,比如某个变量的取值是否在一个给定列表中,比如 prov in (prov in (北京北京, , 上海上海, , 天津天津, , 重庆重庆)p可以判断变量可以判断变量provprov的取值是否为四个直辖市之一。的取值是否为四个直辖市之一。SAS函数SASSAS函数函数返回由它的参数计

38、算得到的结果返回由它的参数计算得到的结果一般形式:一般形式:函数名(参数函数名(参数1 1,参数,参数2 2,)或:或:函数名(函数名(OF OF 变量名列表)变量名列表)说明:说明:参数之间以逗号隔开,可以是常数、变量、参数之间以逗号隔开,可以是常数、变量、表达式或其它函数表达式或其它函数例例SQRTSQRT(X X), PROBNORM, PROBNORM(X X), ,SUMSUM(of x1, x10-x20, x25of x1, x10-x20, x25), , SASSAS提供了远多于一般程序语言的标准函数,主要包括提供了远多于一般程序语言的标准函数,主要包括数学函数数学函数、数组

39、函数数组函数、字符函数字符函数、日期和时间函数日期和时间函数、分布密度函数和分布、分布密度函数和分布函数、分位数函数、随机数函数、样本统计函数函数、分位数函数、随机数函数、样本统计函数等等,它们可以它们可以直接用于数据步计算中。直接用于数据步计算中。例SASSAS函数函数返回由它的参数计算得到的结果返回由它的参数计算得到的结果DATADATA ABC; ABC; INPUT INPUT x1 x2 x3 x4; x1 x2 x3 x4; y=sum (of x1, x2, x3, x4)y=sum (of x1, x2, x3, x4); ; CARDS CARDS; ; 1 2 3 4 1

40、2 3 4 2 3 4 5 2 3 4 5 5 6 7 8 5 6 7 8 ; ;RUNRUN; ;常用字符函数TRIM(s)TRIM(s)返回去掉字符串返回去掉字符串s s的尾随空格的结果;的尾随空格的结果;UPCASE(s) UPCASE(s) 把字符串把字符串s s中所有小写字母转换为大写字母后的中所有小写字母转换为大写字母后的结果;结果;LOWCASE(s) LOWCASE(s) 把字符串把字符串s s中所有大写字母转换为小写字母后中所有大写字母转换为小写字母后的结果;的结果;INDEX(s,s1) INDEX(s,s1) 查找查找s1s1在在s s中出现的位置,找不到时返回中出现的位

41、置,找不到时返回0 0;RANKS(s)RANKS(s)字符字符s s的的ASCIIASCII码值;码值;等等等等常用日期和时间函数MDY(m,d,yr)MDY(m,d,yr)生成生成yryr年年m m月月d d日的日的SASSAS日期;日期;YEAR(dateYEAR(date) ) 由由SASSAS日期值日期值datedate得到年;得到年;MONTH(dateMONTH(date) ) 由由SASSAS日期值日期值datedate得到月;得到月;DAY(dateDAY(date) ) 由由SASSAS日期值日期值datedate得到日;得到日;WEEKDAY(dateWEEKDAY(da

42、te) ) 由由SASSAS日期值日期值datedate得到星期几;得到星期几;QTR(dateQTR(date) ) 由由SASSAS日期值日期值datedate得到季度值;得到季度值;HMS(h,m,s)HMS(h,m,s)由小时由小时h h、分钟、分钟m m、秒、秒s s生成生成SASSAS时间值;时间值;DHMS(d,h,m,s)DHMS(d,h,m,s)由由SASSAS日期值日期值d d、小时、小时h h、分钟、分钟m m、秒、秒s s生成生成SASSAS时间值;时间值;等等等等日期常数和函数日期时间直接作为数字型常数:日期时间直接作为数字型常数:ddMMMyy ddMMMyy D(

43、D(例如例如 : : 12JAN9612JAN96d d 、 14:2014:20t t、 13JUL1998:14:20:3213JUL1998:14:20:32dt)dt)一些操作日期的函数:一些操作日期的函数:DATE()DATE()取今天的日期作为取今天的日期作为SASSAS日期值日期值, , TODAY()-TODAY()-取当日的日期作为取当日的日期作为SASSAS日期值日期值, ,DATETIME()-DATETIME()-取当日的日期和时间作为取当日的日期和时间作为SASSAS日期时间值日期时间值, ,TIME()-TIME()-取今天的时间作为取今天的时间作为SASSAS时间

44、值时间值, , HOUR(time | datetime)HOUR(time | datetime)由由SASSAS的时间或日期时间得到小时,的时间或日期时间得到小时,MINUTE(time | datetime)-MINUTE(time | datetime)-由由SASSAS的时间或日期时间得到分钟的时间或日期时间得到分钟, ,SECOND(time | datetime)-SECOND(time | datetime)-由由SASSAS的时间或日期时间得到秒钟的时间或日期时间得到秒钟, , 日期常数和函数YEAR(date)-YEAR(date)-由由SASSAS日期日期datedate

45、得到年得到年, ,MONTH(date)-MONTH(date)-由由SASSAS日期日期datedate得到月得到月, , DAY(date)-DAY(date)-由由SASSAS日期日期datedate得到日得到日, ,WEEKDAY(date)-WEEKDAY(date)-由由SASSAS日期日期datedate得到星期几得到星期几( (周日周日) ) QTR(date)-QTR(date)-由由SASSAS日期日期datedate得到季度值得到季度值, ,MDY(month,day,year)-MDY(month,day,year)-生成生成yearyear年年monthmonth月月

46、dayday日的日期值日的日期值, , HMS(hour,minute,second)-HMS(hour,minute,second)-由小时由小时hour,hour,分钟分钟minute,minute,秒秒secondsecond生成时间值生成时间值, ,DHMS(date,hour,minute,second)-DHMS(date,hour,minute,second)-生成日期时间值,生成日期时间值,DATEPART (datetime)-DATEPART (datetime)-取取SASSAS日期时时间值日期时时间值datetimedatetime的日期的日期部分部分,日期常数和函数I

47、NTNXINTNX(interval,from,n)-(interval,from,n)-计算从计算从fromfrom开始经过开始经过n n个间隔后的个间隔后的SASSAS日期。其中日期。其中intervalinterval可以取可以取YEARYEAR、QTRQTR、MONTHMONTH、WEEKWEEK、DAYDAY等。比如,等。比如, INTNX(MONTH, 16Dec1997d,3)INTNX(MONTH, 16Dec1997d,3)结果为结果为19981998年年3 3月月1 1日。注意它总是返回一个周期的开始值。日。注意它总是返回一个周期的开始值。INTCKINTCK(interv

48、al,from,to)-(interval,from,to)-计算从日期计算从日期fromfrom到日期到日期toto中间经过中间经过的的intervalinterval间隔的个数,其中间隔的个数,其中intervalinterval取取MONTHMONTH等等. .比如,比如, INTCK(INTCK(YEARYEAR, , 31Dec199631Dec1996d, d, 1Jan19981Jan1998d)d)计算计算19961996年年1212月月3131日到日到19981998年年1 1月月1 1日经过的年间隔的个数,日经过的年间隔的个数,结果得结果得2 2,尽管这两个日期之间实际只隔

49、,尽管这两个日期之间实际只隔1 1年。年。常用数学函数ABS(x)ABS(x)绝对值函数,对绝对值函数,对x x取绝对值;取绝对值;MAX(x1,x2,MAX(x1,x2,xn) ,xn) 最大值函数,求所有自变量中的最大值;最大值函数,求所有自变量中的最大值;MIN MIN (x1,x2,(x1,x2,xn) ,xn) 最小值函数,求所有自变量中的最小值;最小值函数,求所有自变量中的最小值;MOD(x,y) MOD(x,y) 余数函数,求余数函数,求x x除以除以y y的余数;的余数;SQRT(x) SQRT(x) 平方根函数,求平方根函数,求x x的平方根;的平方根;ROUND(x,eps

50、) ROUND(x,eps) 舍入函数,求舍入函数,求x x按按epseps指定精度四舍五入后的结果;指定精度四舍五入后的结果;INT(x) INT(x) 取整函数,对取整函数,对x x取整数部分;取整数部分;LOG(x) LOG(x) 自然对数函数,求自然对数函数,求x x的整数部分;的整数部分;EXP(x) EXP(x) 指数函数,求指数函数,求x x的指数函数的指数函数e ex x;SIN(x),COS(x),TAN(x) SIN(x),COS(x),TAN(x) 三角函数,分别求三角函数,分别求x x的正弦、余弦、正切函数;的正弦、余弦、正切函数;ARSIN ARSIN (x),ARC

51、OS(x),ARTAN(x) (x),ARCOS(x),ARTAN(x) 反三角函数,分别求反三角函数,分别求x x的反正弦、反余弦、的反正弦、反余弦、反正切函数;反正切函数;等等等等分布函数和分布密度函数SASSAS语言作为一种统计计算语言,它提供了语言作为一种统计计算语言,它提供了多种概率分布的有关函数。其中分布密度、多种概率分布的有关函数。其中分布密度、概率、累积分布函数等可以通过几种统一的概率、累积分布函数等可以通过几种统一的格式调用,格式为格式调用,格式为 分布函数值分布函数值 = CDF(= CDF(分布分布, x , , x ); 密度值密度值 = PDF(= PDF(分布分布,

52、 x , , x ); 概率值概率值 = PMF(= PMF(分布分布, x , , x ); 对数密度值对数密度值 = LOGPDF(= LOGPDF(分布分布, x , , x ); 对数概率值对数概率值 = LOGPMF(= LOGPMF(分布分布, x , , x ); 分布函数和分布密度函数CDFCDF计算由计算由分布分布指定的某种分布的指定的某种分布的分布函数分布函数,PDFPDF计算计算分布密度函数值分布密度函数值,PMFPMF计算离散分布的计算离散分布的分布分布概率概率,LOGPDFLOGPDF为为PDFPDF的自然对数,的自然对数,LOGPMFLOGPMF为为PMFPMF的自

53、的自然对数然对数. .函数在自变量函数在自变量x x处计算,处计算,, 表示可选表示可选的参数表。的参数表。 分布类型取值可以为:分布类型取值可以为:BERNOULLI,BETA, BINOMIAL,BERNOULLI,BETA, BINOMIAL,CAUCHY,CHISQUARED, EXPONENTIAL, F, GAMMA, GEOMETRIC,CAUCHY,CHISQUARED, EXPONENTIAL, F, GAMMA, GEOMETRIC,HYPERGEOMETRIC,LAPLACE,LOGISTIC,LOGNORMAL,HYPERGEOMETRIC,LAPLACE,LOGIST

54、IC,LOGNORMAL,NEGBINOMIAL,NORMALNEGBINOMIAL,NORMAL或或GAUSSIAN,PARETO,POISSON,T,GAUSSIAN,PARETO,POISSON,T,UNIFORM, WALD UNIFORM, WALD 或或 IGAUSS, and WEIBULLIGAUSS, and WEIBULL。 可以只写前四个字母。可以只写前四个字母。 分布函数和分布密度函数例如,例如,PDF(NORMAL, 1.96)PDF(NORMAL, 1.96)计算标准正态分布在计算标准正态分布在1.961.96处的密度值(处的密度值(0.058440.05844);

55、); CDF(NORMALCDF(NORMAL,1.96)1.96)计算标准正态分布在计算标准正态分布在1.961.96处的分布函数值(处的分布函数值(0.9750.975) PMFPMF(NORMAL(NORMAL,1.96)=1.96)=PDFPDF(NORMAL(NORMAL,1.96)1.96)即即PMFPMF对连续型分布即为对连续型分布即为PDFPDF。 除了用上述统一的格式调用外,除了用上述统一的格式调用外,SASSAS系统系统还单独还单独提供了提供了用于计算用于计算常用分布的密度、分布函数。常用分布的密度、分布函数。分布函数和分布密度函数 PROBPROBNORM(NORM(x

56、x) ):计算标准正态的分布函数:计算标准正态的分布函数. .即计即计算服从标准正态分布的随机变量算服从标准正态分布的随机变量U U小于等于给定小于等于给定x x的的概率概率(P(PU U= =x x).). PROBPROBCHI(CHI(x x,df,nc),df,nc):计算自由度为:计算自由度为df,df,非中心非中心参数为参数为ncnc的卡方分布的分布函数的卡方分布的分布函数. .如果如果ncnc没有规定或没有规定或取为取为0,0,那么被计算的就是中心卡方分布那么被计算的就是中心卡方分布. .自由度自由度dfdf允允许不是整数许不是整数. .例如例如: : p=1-probchi(3

57、1.264,11);p=1-probchi(31.264,11);的结果为的结果为1-0.999=0.001.1-0.999=0.001.分布函数和分布密度函数 PROBPROBGAM(GAM(x x, ,a a) ):计算形状参数:计算形状参数a a( (a a0)0)的伽马分的伽马分布的分布函数布的分布函数. .例如例如: : p=probgam(7.5,5.2)p=probgam(7.5,5.2);的结果为的结果为0.84885.0.84885. PROBPROBBETA(BETA(x,a,bx,a,b) ):计算贝塔分布的分布函数:计算贝塔分布的分布函数( (其中其中: :,, ,).

58、).例如例如: :p=probbeta(0.75,4,2.5)p=probbeta(0.75,4,2.5);的结果为的结果为0.7467.0.7467. PROBPROBF(F(x x,ndf,ddf,nc),ndf,ddf,nc):计算:计算F F分布分布函数分布分布函数( (其中其中ndfndf为分子自由度为分子自由度,ddf,ddf为分母自由度为分母自由度,nc,nc是非中是非中心参数心参数).).当分布是中心当分布是中心F F分布时分布时, ,取取nc=0nc=0或不规定这或不规定这项自变量项自变量. .自由度可以是非整数自由度可以是非整数. .例如例如: :p=1p=1 probf(

59、3.32,2,30)probf(3.32,2,30); 的的 结结 果果 是是0.04983.0.04983.分布函数和分布密度函数 PROBPROBT(T(x x,df,nc),df,nc):计计算算t t分分布布分分布布函函数数( (其其中中dfdf为为自自由由度度,nc,nc为为非非中中心心参参数数).).若若参参数数ncnc没没有有规规定定或或取取为为0,0,那那么么被被计计算算的就是中心的就是中心t t分布分布. .自由度自由度dfdf允许非整数允许非整数. . PROBPROBBNML(p,n,m)(BNML(p,n,m)(其其中中:0p1,n1,0mn):0p1,n1,0mn):

60、计计算算二二项分布的概率分布函数项分布的概率分布函数. . POISSON(lambda,n)(POISSON(lambda,n)(其其中中 lambdalambda,nn):计计算算柏柏松分布的概率分布函数松分布的概率分布函数. . PROBPROBNEGB(p,n,m)(NEGB(p,n,m)(其其中中0p1,n0p1,n0,m0)0,m0):计计算算负负二二项分布的概率分布函数项分布的概率分布函数. . 分布函数和分布密度函数 PROBPROBHYPR(nn,k,n,HYPR(nn,k,n,x x,r)(,r)(其中其中nn1,0knn,nn1,0knn,0nnn,max0nnn,max

61、(0,k+n(0,k+nnn)xmin(k,n) )nn)xmin(k,n) ):计算:计算超几何分布的概率分布函数超几何分布的概率分布函数. . 设设nnnn个产品中有个产品中有K K个不个不合格品,抽取合格品,抽取n n个样品,其中不合格品数小于等于个样品,其中不合格品数小于等于x x的的概率为此函数值。可选参数概率为此函数值。可选参数r r是不匀率,缺省为是不匀率,缺省为1 1,r r代表抽到不合格品的概率是抽到合格品概率的多少倍代表抽到不合格品的概率是抽到合格品概率的多少倍。 PROBPROBBNRM(x,y,r) BNRM(x,y,r) 标准二元正态分布的分标准二元正态分布的分布函数

62、,布函数,r r为相关系数。为相关系数。 分位数函数 设连续型随机变量设连续型随机变量X X的分布函数为的分布函数为F(x),F(x),对给定的对给定的p p(0p1),(0p1),若有若有x xp p使得使得F(F(x xp p)=p,)=p,则称则称x xp p为随机变量为随机变量X X的分位数的分位数( (或称分布或称分布F(x)F(x)的的p p分位数分位数).SAS).SAS系统提供系统提供计算六种常见连续分布分位数的函数计算六种常见连续分布分位数的函数. . C CINVINV(p,df,nc)(p,df,nc)(其中其中 0p1,0p1,自由度自由度dfdf0,0,非非中心参数中

63、心参数nc0)nc0)计算卡方分布的分位数计算卡方分布的分位数. .例如例如: : data;data; q1=cinv(0.95,3);put q1=q1; q1=cinv(0.95,3);put q1=q1; q2=cinv(0.95,3.5,4.5);put q2=; q2=cinv(0.95,3.5,4.5);put q2=; run; run;结果是结果是q1=7.8147,q2=17.505 (q1=7.8147,q2=17.505 (在在LOGLOG窗口显示窗口显示).).分位数函数 BETA BETAINVINV(p,a,b)(p,a,b)(其中其中:0p1,a:0p1,a0,

64、b0,b0)0):计算贝塔分布的分位数计算贝塔分布的分位数. .例如例如: : x=betainv(0.001,2,4)x=betainv(0.001,2,4);的结果为的结果为0.0101.0.0101. F FINVINV(p,ndf,ddf,nc)(p,ndf,ddf,nc)(其中其中 0p1,0p1,分子自由分子自由度度ndfndf0,0,分母自由度分母自由度ddfddf0,0,非中心参数非中心参数nc0)nc0):计算计算F F分布的分位数分布的分位数. .例如以下例如以下DATADATA步计算的结果步计算的结果为为q1=4.1028,q2=7.5838.q1=4.1028,q2=7

65、.5838. data _null_data _null_; q1=finv(0.95,2,10);put q1=q1=finv(0.95,2,10);put q1=; q2=finv(0.95,2,10,3.2);put q2=q2=finv(0.95,2,10,3.2);put q2=; runrun;分位数函数 T TINVINV(p,df,nc)(p,df,nc)(其中其中0p1,0p1,自由度自由度dfdf0 )0 ):计算:计算t t分分布的分位数布的分位数. .若若ncnc没有规定或取没有规定或取nc=0,nc=0,那么计算的就是中心那么计算的就是中心t t分分布的分位数布的分位

66、数. .若若ncnc的绝对值很大的绝对值很大, ,使用的算法可能失败使用的算法可能失败. .这种情这种情况函数得到一个缺失值况函数得到一个缺失值. . PROBIT(p)(0p1) PROBIT(p)(0p1):计算标准正态分布的分位数:计算标准正态分布的分位数. .它是它是概率函数概率函数PROBNORMPROBNORM的逆函数的逆函数. .如果随机变量如果随机变量X XN(0,1),N(0,1),则则 PXprobit(z)=zPXprobit(z)=z,这个函数产生的结果在这个函数产生的结果在5 5和和5 5之间之间. . GAM GAMINVINV(p,a)(p,a)(其中其中:0p1

67、,a:0p1,a0)0):计算伽马分布的分:计算伽马分布的分位数位数. .例如例如: : x=gaminv(0.75,3.5);x=gaminv(0.75,3.5);的结果为的结果为4.51857.4.51857.样本统计函数 设设有有一一组组观观测测数数据据: :x x1 1, ,x x2 2, , ,x xn n( (存存放放在在变变量量X1X1XnXn或或X X、Y Y、中中).SAS).SAS系统为我们提供一类函数系统为我们提供一类函数( (共共1515个个),),用于计算这组样本值的有关统计量用于计算这组样本值的有关统计量. .这类函数这类函数要求自变量是数值要求自变量是数值. .它

68、们是它们是: : 均值:均值:MEAN(of x1-xnMEAN(of x1-xn)或)或MEAN(x,y,z,MEAN(x,y,z,).).例如例如 x=mean(2,x=mean(2, ,6),6);结果为结果为4.4. x=mean(1,2,3,2)x=mean(1,2,3,2); 结果为结果为2.2. 最大值:最大值:MAX(of x1-xn)MAX(of x1-xn)或或 MAX(x,y,MAX(x,y,).). 最小值:最小值:MIN(of x1-xn)MIN(of x1-xn)或或 MIN(x,y,MIN(x,y,).).样本统计函数 非缺失数据的个数:非缺失数据的个数: N(o

69、f x1-xn)N(of x1-xn)或或 N(x,y,N(x,y,).). 缺失数据的个数:缺失数据的个数: NMISS(of x1-xn) NMISS(of x1-xn) 或或 NMISS(x1,x2,NMISS(x1,x2,).). 求求和和:SUM(of SUM(of x1-xn) x1-xn) 或或 SUM(x1,x2,SUM(x1,x2,).). 方差:方差:VAR(of x1-xn) VAR(of x1-xn) 或或 VAR(x1,x2,VAR(x1,x2,).). 标准差:标准差:STD(of x1-xn)STD(of x1-xn)或或 STD(x1,x2,STD(x1,x2,

70、).).例如例如 x=std(2,6)x=std(2,6);和和x=std(2,x=std(2,6),6);的结果都是的结果都是2.8284272.828427. . x=std(2,4,6,3,1)x=std(2,4,6,3,1);的结果为的结果为1.923538.1.923538.样本统计函数 标准误:标准误:STDERR(of x1-xn)STDERR(of x1-xn)或或STDERR(x1,x2,STDERR(x1,x2,).).例如例如: : x=stderr(2,6,3,4)x=stderr(2,6,3,4);或或 x=stderr(2,6,3,4,x=stderr(2,6,3,

71、4,) );的结果都是的结果都是0.85391260.8539126。 变异系数:变异系数:CV(of x1-xn)CV(of x1-xn)或或 CV(x1,x2,CV(x1,x2,).). 极差:极差:RANGE(of x1-xn)RANGE(of x1-xn)或或RANGE(x1,x2,RANGE(x1,x2,).). 偏差平方和偏差平方和( (校正平方和校正平方和) ): CSS(of x1-xn)CSS(of x1-xn)或或 CSS(x1,x2,CSS(x1,x2,).).该函数计算非缺失自变量关于均值的偏差平方和该函数计算非缺失自变量关于均值的偏差平方和. . 未校正的平方和:未校

72、正的平方和: USS(of x1-xn) USS(of x1-xn) 或或 USS(x1,x2,USS(x1,x2,).).该函数计算非缺失自变量的该函数计算非缺失自变量的( (未校正未校正) )平方和平方和. .样本统计函数 (1414)偏斜度:偏斜度:SKEWNESS(of SKEWNESS(of x1-xn)x1-xn)或或SKEWNESS(x1,x2,SKEWNESS(x1,x2,).).该该函函数计算非缺失自变量的偏斜度数计算非缺失自变量的偏斜度. . (1515)峰度:)峰度:KURTOSIS(of KURTOSIS(of x1-xn)x1-xn)或或KURTOSIS(x1,x2,

73、KURTOSIS(x1,x2,).).该该函函数数产产生生非非缺缺失失自自变变量量的的峰峰度度统统计计量量. .它它要要求求至至少少有有4 4个非缺失自变量个非缺失自变量. . (16) (16) ORDINAL(k,x1,x2,ORDINAL(k,x1,x2,xn)xn)返返回回数数值值列列表表x1, x1, x2,x2,xnxn中第中第k k小的值小的值. . 其他函数LAGLAGn n( (x x) )返回该自变量返回该自变量x x前前n n条观测条观测( (记录记录) )中该变量的中该变量的值值. .DIFDIFn n( (x x) )得到该自变量得到该自变量x x的值减去前的值减去前

74、n n条观测条观测( (记录记录) )中中该变量的值该变量的值. .例如数据集例如数据集AIR: AIR: date airdate airJAN49 112 JAN49 112 FEB49 118 FEB49 118 MAR49 132 MAR49 132 DEC49 118DEC49 118 JAN50 115 JAN50 115 FEB50 126 FEB50 126 MAR50 141 MAR50 141 . . 其他函数(1)(1)计算每月乘客数较上月增加的百分数计算每月乘客数较上月增加的百分数; ;(2)(2)计算逐月乘客数较去年同期增加的百分数计算逐月乘客数较去年同期增加的百分数

75、 Data lagdif; set dst.air; pct1=dif(air)/lag(air); pct2=dif12(air)/lag12(air);run;其它函数SAS函数练习 1. 1. 计算标准正态分布在计算标准正态分布在x=-3,-2,-1, 0,1,2,3x=-3,-2,-1, 0,1,2,3时的时的分布函数分布函数F F( (x x) )和密度函数和密度函数 ( (x x) )的值的值; ; 2. 2. 设随机变量设随机变量 t t( (n n),),计算计算t t分布的分位数分布的分位数t tp p( (n n),),其中其中n n=1,5,10,20; =1,5,10,

76、20; p p=0.10,0.90, 0.95, 0.975;=0.10,0.90, 0.95, 0.975; 3. 3. 当日期值当日期值date=date=14JUL200714JUL2007d d时时, ,试问这一天试问这一天是星期几是星期几? ?DATA步中常用语句DATADATA语句语句PUTPUT语句语句输出语句输出语句SETSET语句语句读取观测语句读取观测语句ATTRIBATTRIB语句语句设定变量属性设定变量属性赋值语句赋值语句计算计算SASSAS表达式,给变量赋值表达式,给变量赋值DROPDROP语句语句删除变量语句删除变量语句KEEPKEEP语句语句保留变量语句保留变量语

77、句IFIF语句语句条件语句条件语句DO-ENDDO-END语句语句循环语句循环语句DELETEDELETE语句语句删除语句删除语句OUTPUTOUTPUT语句语句输出到数据集语句输出到数据集语句COMMENTCOMMENT语句语句注释语句注释语句ARRAYARRAY语句语句数组语句数组语句数据步中的常用语句DATADATA语句语句:用来建立一个或多个新的数据集:用来建立一个或多个新的数据集一般形式:一般形式:DATA DATA 数据集名数据集名 ( (数据集选项数据集选项) ) 数据集名数据集名 ( (数据集选项数据集选项) ) 数据集选项的表示方法为数据集选项的表示方法为“选项名选项名= =

78、选项值选项值” ;可以同时指定多个数据集的选项,也可以为一个可以同时指定多个数据集的选项,也可以为一个数据集同时指定多个选项。数据集同时指定多个选项。说明:说明:数据步中的常用语句例数据集选项举例。例数据集选项举例。datadata new (drop=var1); new (drop=var1); /*/*去掉数据集去掉数据集newnew中变量中变量var1*/var1*/datadata new new (keep=_numeric_); (keep=_numeric_); /*/*保保留留数数据据集集newnew中中所所有有数数值值变变量量*/*/datadata new new (la

79、bel=(label=股股本本变变动动历历史史); ); /*/*规规定定数数据据集集newnew标标签签名为名为”股本变动历史股本变动历史”*/*/datadata new new (rename=(var1=u (rename=(var1=u var2=v); var2=v); /*/*将将数数据据集集newnew中中变变量量var1var1和和var2var2更名为更名为u u和和v*/v*/datadata book(index=(author book(index=(author subject); subject); /*/*数数据据集集bookbook对对变变量量author s

80、ubjectauthor subject建立索引建立索引*/ */ 数据步中的常用语句_null_一一般般和和PUTPUT语语句句一一起起用用。由由PUTPUT输输出出结结果果,只只输输出出到到LOGLOG窗窗口口,不会产生不会产生SASSAS数据集。数据集。例例 不产生数据集。不产生数据集。data_null_;x=exp(5);y=log(10);putx=y=;run;数据步中的常用语句PUTPUT语句:语句:用来显示输出结果,输出结果直接用来显示输出结果,输出结果直接显示在显示在LOGLOG窗口窗口中中输出项可以是变量名或字符串,但不能是数值常输出项可以是变量名或字符串,但不能是数值常

81、量或表达式,各项之间需用空格分开;量或表达式,各项之间需用空格分开;输出项还可以指定具体列位置;输出项还可以指定具体列位置;为使输出不产生换行,可在为使输出不产生换行,可在PUTPUT语句的结尾处加语句的结尾处加一个一个 符号。符号。说明:说明:一般形式:一般形式:PUTPUT 输出项输出项1 1 输出项输出项2 2 或:或: PUTPUT 变量名变量名= =例例数据步中的常用语句DATA abc; X=0.5; Y=sin(x); PUT “Sine funtion value of” x “is” y; PUT x= y=; PUT x 10-20 .6 y 30-40 .6;RUN;数据

82、步中的常用语句 SET SET语句:语句:把一个已有数据集复制到一个新把一个已有数据集复制到一个新数据集,同时还可以进行修改数据集,同时还可以进行修改KEEP=KEEP= :表示引入时只要指定的变量;:表示引入时只要指定的变量;DROP=DROP=:表示不引入指定的变量;:表示不引入指定的变量;OBS=OBS=:表示读取观测时读到指定的序号为止;:表示读取观测时读到指定的序号为止;FIRST= FIRST= :表示从指定序号的观测开始读取而跳:表示从指定序号的观测开始读取而跳过之前的观测不读。过之前的观测不读。数据集选项主要有:数据集选项主要有:一般形式:一般形式:SETSET 数据集名(数据

83、集选项)数据集名(数据集选项)数据步中的常用语句ATTRIBATTRIB语句语句:用来指定变量的类型、标签、长度、:用来指定变量的类型、标签、长度、输入输出格式等变量属性输入输出格式等变量属性一般形式:一般形式:ATTRIBATTRIB 变量名变量名 属性属性 变量名变量名 属性属性 属性的表示方法为属性的表示方法为“属性名属性名= =属性值属性值” ;可以同时指定多个变量的属性,也可以为一个变可以同时指定多个变量的属性,也可以为一个变量同时指定多个属性。量同时指定多个属性。说明:说明:例例数据步中的常用语句DATADATA sales; sales; ATTRIBATTRIB name na

84、me LABELLABEL=“=“姓名姓名姓名姓名” ” LENGTH=$10LENGTH=$10 date date LABELLABEL=“=“日期日期日期日期” ” FORMAT=yymmdd10. FORMAT=yymmdd10. INFORMAT=yymmdd10. INFORMAT=yymmdd10. amount amount LABELLABEL=“=“金额金额金额金额” ” FORMAT=10.2; FORMAT=10.2; INPUT INPUT name $ 1-10 date amount; name $ 1-10 date amount; CardsCards; ;

85、张鹏张鹏张鹏张鹏 2003/03/18 20002003/03/18 2000 李志明李志明李志明李志明 2003/05/23 15002003/05/23 1500 王敏王敏王敏王敏 2003/09/01 30002003/09/01 3000 ; ;RUNRUN; ;PROC PRINTPROC PRINT NOOBS LABEL; NOOBS LABEL;RUNRUN; ;数据步中的常用语句赋值语句:赋值语句:用于计算一个用于计算一个SASSAS表达式,并将表表达式,并将表达式的值赋给变量达式的值赋给变量为新建或修改为新建或修改的变量名的变量名为由变量、为由变量、SASSAS函数和四则运

86、算函数和四则运算构成的表达式构成的表达式一般形式为:一般形式为: Var = expressionVar = expression数据步中的常用语句条件语句条件语句的一般形式为:的一般形式为: IFIF 条件表达式条件表达式 THENTHEN 可执行语句;可执行语句;ELSEELSE 可执行语句(可执行语句(不是必须的不是必须的););条件表达式主要包含操作数和操作符:条件表达式主要包含操作数和操作符:操作数操作数变量名变量名常数常数比较操作符比较操作符 逻辑操作符逻辑操作符操作符操作符数据步中的常用语句DO-ENDDO-END语句:语句:在在DODO后面直到后面直到ENDEND语句之前的所有

87、语语句之前的所有语句作为一个单元(称为一个句作为一个单元(称为一个DODO组组)被执行,任意多)被执行,任意多个个DODO组组能够被嵌套执行。能够被嵌套执行。常用类型有:常用类型有: 简单简单 DO DO 语句语句常常用在用在IF-THEN/ELSEIF-THEN/ELSE语语句里,根据句里,根据IFIF语句的语句的条件判断结果来确定条件判断结果来确定语句组的执行语句组的执行 ;IfIf X X5 5 then dothen do; ; Y=X10 Y=X10 ; put X = Y= put X = Y= ; endend; Z=X+3; Z=X+3; ;数据步中的常用语句 datadata

88、 _null_ _null_ ; ; dodo I=1 I=1 toto 6 6 byby 2 2 ; ; put put I= I= ; ; end; end; run; run; 循环循环 DO DO 语句语句使使DODO和和ENDEND之间的语句之间的语句根据循环控制变量的值重复被执行根据循环控制变量的值重复被执行DODO 循环控制变量循环控制变量 = =初值初值 TOTO 终值终值 BYBY 步长步长;其它可执行程序其它可执行程序;ENDEND;数据步中的常用语句 datadata males females males females; ; setset childchild; ;

89、ifif x1=x1=m m thenthen output output males;males; elseelse output output females;females; run;run; OUTPUTOUTPUT语句语句使使SASSAS系统输出当前的观测或系统输出当前的观测或DODO组组中的变量到正被创建的数据集中中的变量到正被创建的数据集中说明:说明:所有规定的数据集的名字也必须在所有规定的数据集的名字也必须在DATADATA语句中出现语句中出现OUTPUTOUTPUT 数据集数据集1 1 数据集数据集n n;一般形式为:一般形式为: 数据步中的常用语句COMMENTCOMMEN

90、T语句语句为注释语句,可放在为注释语句,可放在SASSAS过程的过程的任何地方用来说明这个过程的目的,如解释说明任何地方用来说明这个过程的目的,如解释说明程序中的一些独特的程序段,或介绍整个程序等。程序中的一些独特的程序段,或介绍整个程序等。 注释内容;注释内容;或:或:/*/*注释内容注释内容* */ /一般形式为:一般形式为: * *循环循环 DO DO 语句语句; ;( (或:或:/*/*循环循环 DO DO 语句语句* */)/)datadata _null_ _null_ ; ; dodo I=1 I=1 toto 6 6 byby 2 2 ; ; putput I= I= ; ;

91、end;end;run;run;数据步中的常用语句数组:数组:SASSAS过程中使用同一个名字称呼,用下标来区过程中使用同一个名字称呼,用下标来区分的合在一起的同为数值型或同为字符型的一组变量分的合在一起的同为数值型或同为字符型的一组变量数值型数组数值型数组ARRAY ARRAY 数组名(维数说明)数组名(维数说明) 数组元素名列表(初始值表)数组元素名列表(初始值表); ;例如:例如:q ARRAY ARRAY teststests(3 3) Math Chinese EnglishMath Chinese English(0,0,00,0,0); ;q ARRAY ARRAY x x(3

92、3); ;q ARRAY ARRAY teststests()() Math Chinese EnglishMath Chinese English(0,0,00,0,0); ;q ARRAY ARRAY tabletable(2,22,2) x11 x12 x21 x22;x11 x12 x21 x22;数据步中的常用语句字符型数组字符型数组ARRAY ARRAY 数组名(维数说明)数组名(维数说明)$ $ 元素长度说明元素长度说明 数组元素名列表(初始值表)数组元素名列表(初始值表); ;例如例如q ARRAY ARRAY namesnames(3 3) $ 10 child father

93、 mother; $ 10 child father mother; 数组:数组:SASSAS过程中使用同一个名字称呼,用下标来区过程中使用同一个名字称呼,用下标来区分的合在一起的同为数值型或同为字符型的一组变量分的合在一起的同为数值型或同为字符型的一组变量数据步中的常用语句DATADATA abc; abc; ARRAYARRAY x(10);x(10); DO i=1 to 1000;DO i=1 to 1000; DO j=1 to 10;DO j=1 to 10; x(j)=normal(0); x(j)=normal(0); END;END; OUTPUT; OUTPUT; END; END; DROP DROP i j ; i j ;RUNRUN; ;DATADATA new; new; SETSET abc(obs=100 keep=x1 x2); abc(obs=100 keep=x1 x2); PROC PRINT PROC PRINT; ;RUNRUN; ;正态分布随正态分布随正态分布随正态分布随机数函数机数函数机数函数机数函数The End

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

最新文档


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

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