《SAS编程技术数据步文件管理.pptx》由会员分享,可在线阅读,更多相关《SAS编程技术数据步文件管理.pptx(89页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、DATA语句语句 语句格式DATAdata-set-name-1.data-set-name-n;DATAview-namedata-set-name-1.data-set-name-n/VIEW=view-name();DATAdata-set-name/PGM=program-name();DATAPGM=program-name();REDIRECTREDIRECTINPUT|OUTPUTold-name-1=new-name-1;DATAVIEW=view-name();DESCRIBE;第1页/共89页选项说明选项说明 这里只给出常用选项的说明,其它选项说明可以从SAS系统帮助中查找
2、。第2页/共89页例6.1规定要创建的SAS数据集。data;/*系统自动规定数据集名datan*/dataa;/*创建临时数据集a*/dataResDat.a;/*创建永久数据集*/datadata1data2;/*创建两个临时数据集data1和data2*/data_null_;/*特殊名,不创建SAS数据集,用于输出*/Run;第3页/共89页例例 数据集选项举例。data new(drop=var1);/*去掉数据集new中变量var1*/data new(keep=_numeric_);/*保留数据集new中所有数值变量*/data new(label=股本变动历史);/*规定数据集
3、new标签名为”股本变动历史”*/data new(rename=(var1=u var2=v);/*将数据集new中变量var1和var2更名为u和v*/data book(index=(author subject);/*数据集book对变量author subject建立索引*/第4页/共89页特殊数据集名特殊数据集名 _data_(省略数据集名)data _data_;/*等价于语句data;*/系统自动为数据集赋名:data1,data2,datan.第5页/共89页_null_一般和PUT语句一起用。由PUT输出结果,只输出到LOG窗口,不会产生SAS数据集。例6.6 不产生数据集
4、。data_null_;x=exp(5);y=log(10);putx=y=;run;80 data _null_;81 x=exp(5);82 y=log(10);83 put x=y=;84 run;NOTE:“DATA 语句”所用时间(总处理时间):实际时间 0.03 秒 CPU 时间 0.00 秒第6页/共89页_last_last_是SAS系统的一个自动变量,取值为最新创建的SAS数据集名。例6.7 查看最新创建的SAS数据集。dataa;set _last_;run;第7页/共89页 一个一个DATA语句下多个数据集名语句下多个数据集名 例6.8观测子集的形成。datayear19
5、98year1999year2000;set;ifyear(date)=1998thenoutputyear1998;/*year为函数名*/elseifyear(date)=1999thenoutputyear1999;elseifyear(date)=2000thenoutputyear2000;run;例中,根据条件产生三个观测子集,名字分别为YEAR1998,YEAR1999和YEAR2000.第8页/共89页85 data year1998 year1999 year2000;86 set ResDat.stk000001;87 if year(date)=1998 then out
6、put year1998;/*year为函数名*/88 else if year(date)=1999 then output year1999;89 else if year(date)=2000 then output year2000;90 run;NOTE:从数据集 RESDAT.STK000001 读取了 3836 个观测。NOTE:数据集 WORK.YEAR1998 有 245 个观测和 62 个变量。NOTE:数据集 WORK.YEAR1999 有 237 个观测和 62 个变量。NOTE:数据集 WORK.YEAR2000 有 238 个观测和 62 个变量。NOTE:“DAT
7、A 语句”所用时间(总处理时间):实际时间 0.06 秒 CPU 时间 0.04 秒第9页/共89页CARDS与与CARDS4语句语句 CARDS语句或DATALINES语句告诉SAS系统下面跟着的是数据行。数据行之前用CARDS语句或DATALINES语句。语句格式:CARDS;或DATALINES;数据行例6.10数据行之前用CARDS语句。data;inputvar1var2var3$;cards;1620First;第10页/共89页数据行中含有分号时,必须用CARDS4或DATALINES4语句。语句格式:Cards4;或DATALINES4;数据行;例6.11数据行中含有分号时用C
8、ARDS4语句。data;inputvar1$var2$var3$;cards4;A;B(;);第11页/共89页PUT语句语句 PUT语句输出信息到:SAS系统的LOG窗口;SAS系统的OUTPUT窗口;FILE语句规定的外部文件。第12页/共89页简单方式:PUT;PUT.specification;列方式:PUTstart-column;格式化方式:PUTstart-column;PUTvariableformat.;PUT(variable-list)(format-list);列表方式:PUTvariable;PUT character-string;PUTvariableforma
9、t.;命名方式:PUT variable=;PUTvariable=start-column;语句格式语句格式 第13页/共89页例6.12用PUT语句产生的输出结果及其比较。data_null_;put132*_;/*在log窗口输出132个下划线_*/put100*1;/*在log窗口输出100个1*/run;data_null_;inputxyz;put_infile_;/*输出最新的数据行到SASLog窗口*/cards;1-590371028;run;LOG窗口输出结果:1-5 9 0 3 7 10 2 8 第14页/共89页例6.14 其它控制输出格式举例。data _null_;
10、set;by sex;file print;*向结果窗口输出;put name 1-8 12 sex;if last.sex then put/This is the last of sex$_page_;run;第15页/共89页Alice FBarbara FCarol FJane FJanet FJoyce FJudy FLouise FMary FThis is the last of FAlfred MHenry MJames MJeffrey MJohn MPhilip MRobert MRonald MThomas MWilliam MThis is the last of M第
11、一页第二页输出窗口显示:第16页/共89页data;put Example of overprint overprint-;run;LOG窗口输出结果:Example of overprint-第17页/共89页列方式输出列方式输出 语句格式:PUTstart-column;例6.15控制输出的列位置。dataa;a=100;b=300;puta10-16.2b20-26.3;run;LOG窗口输出结果:100.00300.000第18页/共89页列表方式输出列表方式输出 语句格式:PUTvariable;PUT character-string;PUTvariableformat.;修饰符说
12、明:vn*规定后面格式重复n次;v:规定后面格式输出变量值时去掉前后的空格;第19页/共89页例6.16应用举例。dataa;x1=;x2=;x3=;put(_all_)();run;LOG窗口输出结果:第20页/共89页格式化输出格式化输出 语句格式:PUTstart-column;PUTvariableformat.;PUT(variable-list)(format-list);第21页/共89页例6.17应用举例。dataa;inputname&$10.bldg$room;/*变量name有空格*/putname20(bldgroom)($1.-,3.);/*从第20列开始输出第二、三
13、个变量*/cards;GUBEIJINGJ125ROBERTUSC233;run;第22页/共89页LOG窗口输出结果:53 data a;54 input name&$10.bldg$room;/*变量name有空格*/55 put name 20(bldg room)($1.-,3.);/*从第20列开始输出第二、三个变量*/56 cards;GU BEIJING J-125ROBERT US C-233NOTE:数据集 WORK.A 有 2 个观测和 3 个变量。NOTE:“DATA 语句”所用时间(总处理时间):实际时间 0.01 秒 CPU 时间 0.00 秒59 ;60 run;第
14、23页/共89页上面程序也可以写成:上面程序也可以写成:data a;input name&$10.bldg$room ;a=-;put name 20 bldg$a$room;cards;GU BEIJING J 125ROBERT US C 233;run;但第一种方法的效果好。LOG窗口输出结果:61 data a;62 input name&$10.bldg$room ;63 a=-;64 put name 20 bldg$a$room;65 cards;GU BEIJING J-125ROBERT US C-233NOTE:数据集 WORK.A 有 2 个观测和 4 个变量。NOTE
15、:“DATA 语句”所用时间(总处理时间):实际时间 0.03 秒 CPU 时间 0.00 秒68 ;69 run;第24页/共89页BY语句语句 数据步中,BY语句规定分组变量。用于控制SET,MERGE,UPDATE或MODIFY语句的操作。语句格式 ByVariable-1.Variable-N;第25页/共89页选项说明 BY语句概念 第26页/共89页FIRST.变量和变量和LAST.变量变量 SAS系统对每个BY组创建两个自动变量:First.variable和Last.variable,用来标识每个BY组的第一个和最后一个观测。对于一个BY组的第一个观测值,取1,其余取0.对于一
16、个BY组的最后一个观测值,取1,其余取0.这些变量不含在新产生的数据集中。第27页/共89页例6.18 保留各BY组的最后一个观测值。data a;set ResDat.stk000001;month=month(date);year=year(date);proc sort data=a;by year month;data b;set a;by year month;if last.month;/*保留每月最后一个观测值*/run;第28页/共89页SET语句语句 SET语句从一个或多个已存在的SAS数据集中读取观测值,并将这些观测组合在一个数据集中。语句格式:SETdata-set-na
17、me-1data-set-name-n/UNIQUE;一个DATA步中可以有多个SET语句,一个SET语句中可以有任个SAS数据集。第29页/共89页选项说明选项说明 没有变元读最新创建数据集Data-Set-Name规定要组合的数据集Data-Set-Options规定对数据集的操作,常用选项keep=,Drop=,rename=,where=和in=。Point=Variable_Name规定一个临时变量控制SET语句读入的观测序号NOBS=Variable_Name规定一个临时变量,记录读入数据集的观测总数。此变量不含在新产生的数据集中END=Variable_Name规定一个临时变量,
18、作为文件结束的标识。文件结束时取值1,其它观测取0。此变量不含在新的数据集中第30页/共89页应用举例应用举例 例例6.19 选项说明若干举例。规定临时变量选项Point=:dataa;setResDat.Idx000001;obs=_n_;datab(keep=obsdateclpr);don=3,5,7,4;setapoint=n;/*读入数据集a中的第3,5,7,4观测*/if_error_=1thenabort;output;end;stop;/*使用选项point=时,经常要用stop语句来终止data步的执行*/procprint;run;第31页/共89页例例6.22 数据集选项
19、in=var。data a;set one(in=one)two(in=two);in1=one;in2=two;run;数据集a:xyZin1in21Groucho103Harpo105Kart102Chico014Zeppo01第32页/共89页规定临时变量选项NOBS=:dataa;doobsnum=1tolastby20;/*临时变量为last*/setResDat.stk000001point=obsnumnobs=last;output;end;stop;run;第33页/共89页如何找数据集的观测个数:data a;a=nobs;set ResDat.stk000001 nobs
20、=nobs;if _n_=a;run;如何找数据集的最后一个观测值:data a;set ResDat.stk000001 nobs=nobs;if _N_=NOBS;run;第34页/共89页找数据集最后一个观测值更简单的方法:dataa;setResDat.stk000001end=obs_last;ifobs_last=1;run;输出数据集的最后一个观测值:dataa;setResDat.stk000001End=lastobs;iflastobs;x=lastobs;/*将临时变量lastobs的值赋给X*/putlastobservation;run;第35页/共89页例6.23
21、数据集选项说明若干举例。保留部分变量:dataa;setResDat.Idx000001(keep=dateclpr);run;datab(keep=dateclpr);setResDat.Idx000001;run;datac;setResDat.Idx000001;keepdateclpr;run;上述三段程序的结果相同。注意,但第三段程序用的是KEEP语句,并不是数据集选项的应用。dataoppr(keep=dateoppr)clpr(keep=dateclpr);setResDat.stk000001;run;第36页/共89页保留部分观测:datamales;set;wheresex
22、=M;run;datamales;set;ifsex=Mthenoutput;run;datamales;set;ifsex=Mthendelete;run;第37页/共89页例6.24 相同变量的数据集连接。dataqttn;set ResDat.stk000001ResDat.stk000002;run;例6.25 不同变量的数据集连接。dataa;setResDat.stk000001;run;第38页/共89页MERGE语句语句 MERGE语句将多个数据集中的观测合并为新数据集中的一个观测。SAS系统合并观测的方式依赖于BY语句的使用。语句格式MERGEdata-set-name-1d
23、ata-set-name-2data-set-name-n;第39页/共89页选项说明选项说明 第40页/共89页应用举例应用举例例6.27一对一合并dataa;mergeResDat.stk000001;run;例中,一对一合并时,不需要BY语句。例6.28匹配合并dataa;mergeResDat.stk000001(keep=dateclprrename=(clpr=clpr000001)ResDat.stk000002(keep=dateclprrename=(clpr=clpr000002);bydate;run;例中,匹配合并必须有BY语句。第41页/共89页例例6.29使用数据集
24、选(in=),选择股票代码为000001,200011,600601和900903的首次发行与上市数据。Datastkcd;Inputstkcd$6.;Cards;000001200011600601900903;DataIissulst1;MergeResdat.Iissulststkcd(in=id);Ifid;/*选择满足条件股票的首次发行与上市数据*/Run;第42页/共89页FILE语句语句 FILE语句用于规定将要输出的外部文件。FILE语句一般要与PUT语句配合使用。同一个DATA步可以用多个FILE语句。FILE语句是可执行语句,因而可以用在条件(IFTHEN)过程中。语句格式
25、FILEfile-specification;FILE-SPECIFICATION选项说明:第43页/共89页OPTIONS选项说明(部分):选项说明DELIMITER=string-in-quotation-marks|character-variable/DLM=指定列表输出时所用的分隔符,在别的输出形式中该选项不起作用。缺省情况下为空格。DROPOVER规定当输出数据行的长度超过规定值时,忽略超过的部分。FLOWOVER规定当输出数据行的长度超过规定值时,超出部分在下一行输出。缺省状态为FLOWOVER。DSD规定一个数据可以包含分隔符,要用引号括住。FILENAME=variable定
26、义一个字符变量,其值为PUT语句打开的文件名。FILEVAR=variable定义一个变量,FILE语句根据其值的变化关闭和打开输出文件。第44页/共89页例6.39filename=variable选项应用dataa;fileprintfilename=xxx;/*输出到OUTPUT窗口,put语句打开的文件名为print*/puthello;/*OUTPUT窗口将输出hello*/name=xxx;/*数据集a中有一个变量name和一个观测值print*/run;数据集aname1PRINT第45页/共89页dataa;filefilename=xxx;/*输出到文件d:a.txt,put
27、语句打开的文件名为*/puthello;/*文件的内容为:hello*/fname=xxx;run;fname1d:a.txt数据集a第46页/共89页例6.44 输出规定格式的外部文本文件。data;set;a=%a(;b=,;c=);file“D:”;put a$stkcd$b$lstknm$c$;run;例中程序产生股票宏文本文档。第47页/共89页INFILE语句语句 INFILE语句用来定义一个外部数据文件,文件中的数据用INPUT语句读取。外部文件可以是已存在的磁盘文件,也可以是从键盘上输入的数据行。语句格式INFILEfile-specification;FILE-SPECIFI
28、CATION选项说明:EXTERNALFILE和FILEREF选项类似FILE语句的相应选项。CARDS|CARDS4|DATALINES|DATALINES4选项指明输入数据为CARDS(CARDS4,DATALINES,DATALINES4)后面的数据流,而非来自外部数据文件。第48页/共89页大部分选项的作用和FILE的一致。下面只介绍几个INFILE独有的选项。OPTIONS选项说明选项说明DSD规定若一个数据由引号括起,则SAS认为其包含的逗号是字符数据。设定缺省分隔符为逗号。两个连续分隔符中间数据为缺失。读入时去掉数据的引号。END=variable定义一个变量标记是否已经到达输入
29、文件的结尾。FIRSTOBS=record-number规定从该记录行开始读入MISSOVER阻止INPUT语句从下一个数据行读入数据,未赋值的变量设为缺失。OBS=record-number|MAX规定要读入的记录数.第49页/共89页例4DELIMITER=选项应用dataa;infile cards delimiter=,;inputxyz;cards;3,6,91,3,58,8,8;例中,要输入的数据用逗号分隔,创建SAS数据集时用选项DELIMITER=,。数据集axyz136921353888第50页/共89页例7 DSD选项应用 data scores;infile datali
30、nes delimiter=,;input test1 test2 test3;datalines;91,87,9597,92,1,1;例中,分隔符为逗号,但第二个观测值的两个相邻分隔符之间还有缺失值,没有DSD选项时,这两个相邻的分隔符组成一个分隔符,于是,输入数据时会出错。test1test2test31918795297921第51页/共89页上例加上DSD选项,将两个相邻分隔符之间的数作为缺失值处理datascores;infiledatalinesdelimiter=,DSD;inputtest1test2test3;datalines;91,87,9597,92,1,1;通常情况下
31、,同时加上MISSOVER和DSD两个选项是良好的编程习惯。test1test2test31918795297.922.11第52页/共89页应用举例应用举例 例例6.48应用INFILE语句导入外部数据文件的标准程序datadelinfo(label=退市信息|delistinformation);formatstkcd$6.lstknm$12.lstdtyymmdd10.delistdtyymmdd10.exchflg$1.stktype$1.;informatstkcd$6.lstknm$12.lstdtyymmdd10.delistdtyymmdd10.第53页/共89页exchflg
32、$1.stktype$1.;labelstkcd=股票代码|stockcodelstknm=最新股票名称|lateststocknamelstdt=股票上市日|listdatedelistdt=退市日期|delistdateexchflg=交易所标识|exchangeflagstktype=股票类型|stocktype;infiled:resdatdelinfo.txtdelimiter=09xmissoverdsdfirstobs=2;inputstkcd$6.lstknm$12.lstdtyymmdd10.delistdtyymmdd10.exchflgstktype1.;run;例中,0
33、9x是TAB的十六进制表示,这里规定delimiter=09x是不能去掉的,去掉的话就出错了。由于文本数据不规则,须中或:控制变量delistDt.第54页/共89页第第19章章 SQL过程简过程简介介清华大学经管学院清华大学经管学院 朱世武朱世武Resdat样本数据:样本数据:SAS论坛:论坛:第55页/共89页SQL概念概念 SQL的英文全称是Structured Query Language,翻译成汉语为“结构化查询语言”第56页/共89页SQL过程过程 可以通过调用SAS的SQL过程使用SQL语言。PROCSQL可以使用DATA选项、函数、INFORMAT、FORMAT和通用的SAS语
34、句。PROCSQL的功能:产生汇总统计表;从表和视图中检索数据;合并表和视图中的数据;建立表、视图和索引;更新PROCSQL表中的数据值;更新和检索DBMS数据管理系统中的表;修改、添加、剔除PROCSQL表中的数据列。第57页/共89页SQL过程术语过程术语 PROCSQL表和SAS数据文件一样,都是SAS数据类型文件。PROCSQL表包括行和列。行对应SAS数据文件中的观测,列对应SAS数据文件中的列变量。第58页/共89页查询查询(Queries)(Queries)查询从表、视图和DBMS中检索数据。使用SELECT语句和其附属子句来建立查询。视图视图(Views)(Views)PROC
35、 SQL视图并不储存数据,而只是存储了一个SELECT语句或者查询。空值空值(Null Values)(Null Values)根据SQL的ANSI(美国国家标准协会)标准,缺失值被叫做空值。第59页/共89页PROC SQL特点特点 因为PROCSQL继承了SQL,所以和其它SAS过程步有一定的区别。lPROCSQL持续运行直至遇到QUIT语句、DATA步,或其它SAS过程。因此,不用在每个SQL语句中重复PROCSQL。lSQL过程语句有多个子句。lSELECT语句在检索数据的同时会在输出窗口输出数据,使用NOPRINT选项可以阻止该项输出。l用ORDERBY语句可以代替SORT过程来完成
36、排序。l RUN语句在语句在PROC SQL语句中不起作用语句中不起作用。第60页/共89页PROC SQL与与SAS DATA 步比较举例步比较举例 中国队和美国队打乒乓球比赛,队员分成5个水平,每个水平的球员都要和对手同一水平的队员打一场比赛,基础表数据如下。China Playerlevel china0 c011 c022 c033 c04USA playerlevel usa1 u002 u012 u023 u034 u04第61页/共89页设两个基础表名分别为China和America。使用merge语句来连接时,有如下对战结果。Data PingPong;Merge resdat
37、.China resdat.USA;Run;levelchinaamerica1c01u002c02u012c03u023c04u034u04显然,这不是完整的对战信息。第62页/共89页如果用PROC SQL中的连接语句,就很容易得到满足要求的结果。proc sql;title PingPang China versus USA table;create table PingPang as select,China,USA from a inner join b on =;Select*from PingPang;quit;PingPangChinaversusAmericatableLev
38、elchinaamerica1c02u002c03u022c03u013c04u03第63页/共89页第第16章章 统计量计算统计量计算清华大学经管学院清华大学经管学院 朱世武朱世武Resdat样本数据:样本数据:SAS论坛:论坛:第64页/共89页本章将介绍的统计量计算过程包括:本章将介绍的统计量计算过程包括:相关过程;频数过程;均值过程;单变量过程。第65页/共89页相关过程相关过程 相关过程(CORR)用于计算变量间的相关系数。相关过程句法相关过程句法PROC CORR;BY variable-1.variable-n;FREQ frequency-variable;PARTIALvar
39、iable(s);VAR variable(s);WEIGHTweight-variable;WITHvariable(s);第66页/共89页语句说明:第67页/共89页PROC CORR语句语句 PROC CORR;PROCCORR语句选项说明由下页表给出。第68页/共89页选项说明:ALPHA输出Cronbach系数COV输出协方差DATA=输入数据集名NOPRINT禁止打印输出OUTP=规定创建存放Pearson相关系数的数据集OUTS=规定创建存放Spearman相关系数的数据集PEARSON输出Pearson相关系数第69页/共89页其它语句其它语句 VAR语句VARvariabl
40、e-list;列出要计算相关系数的变量。WITH语句WITHvariable-list;该语句和VAR语句联合使用计算变量间特殊组合的相关系数。用VAR语句列出的变量放在相关阵的上方,而用WITH语句列出的变量放在相关阵左边。PARTIAL语句PARTIAL variable-list;计算Pearson偏相关,Spearman偏秩序相关,或Kendall偏tau-b。该语句给出偏相关变量的名子。第70页/共89页WEIGHT语句WEIGHTvariable;计算加权的乘积矩相关系数,该语句给出权数变量名字。该语句用于Pearson(皮尔逊)相关。FREQ语句FREQvariable;该语句指
41、定一个数值型的FREQ变量,它的值表示输入数据集中相应观测出现的频数。该变量的值应为正整数。若FREQ变量值1或缺失,相应的观测不参加计算统计量;若这个值不是正整数,取整数部分。BY语句BY variable-list;对BY变量定义的观测组分别计算其相应的简单统计量。当使用BY语句时,要求输入数据集已按BY变量排序的次序排列,除非指定NOTSORTED。第71页/共89页应用举例应用举例 例16.1计算Pearson相关系数及其它关联测度。proccorrdata=pearsonspearmanhoeffding;varweightoxygenruntime;titleMeasuresofA
42、ssociationfor;title2aPhysicalFitnessStudy;run;第72页/共89页例16.2计算并输出相关指标。proccorrdata=ResDat.Idx000001pearsonspearmankendallhoeffding;varopprhiprloprclpr;titleSpearman的rho,Kendall的tau-b,Pearson和Hoeffding相关;run;proccorrdata=ResDat.Idx000001csscpcov;varopprhiprlopr;partialclpr;title偏相关阵;run;proccorrdata=
43、ResDat.Idx000001covalphaoutp=corrout;varopprhiprlopr;title协方差阵和相关阵;run;procprintdata=corrout;title2PROCCORR产生的输出数据集;run;例中,计算上证指数中变量OPPR,HIPR,LOPR,CLPR之间4种类型的关联测度,PEARSON偏相关阵,CRONBACH系数并产生TYPE=CORR的含有协方差及相关阵的输出数据集。第73页/共89页例16.3计算两个数据集中相同变量之间的相关系数。dataa;/*数据集准备*/mergeResDat.Idx000001(keep=dateopprcl
44、pr)ResDat.szcz(keep=date oppr clpr rename=(oppr=oppr_szclpr=clpr_sz);bydate;run;proccorrdata=anomisscov;varoppr_szclpr_sz;withopprclpr;title2长方形的COV和CORR阵;run;proccorrdata=acovcsscpoutp=oup;title2从含有缺失值的数据集中计算CSSCP和COV;run;例中,对上证指数和深证成指中的变量开盘价和收盘价作相应的计算。第74页/共89页频数过程频数过程 频数过程(FREQ)用于计算各种形式的频数及一些检验统计
45、量。第75页/共89页频数过程句法频数过程句法 PROC FREQoptions;OUTPUT;TABLESrequests/options;WEIGHTvariable;EXACT statistic-keywords;BYvariable-list;第76页/共89页语句说明:第77页/共89页PROC FREQ语句语句 PROC FREQ options;选项说明:第78页/共89页ORDER=选项及说明:第79页/共89页FORMCHAR(1,2,7)=符号串:1规定垂直线字符;2规定水平线字符;7规定水平与垂直交叉线字符。通常情况下的FORMCHAR=选项:FORMCHAR(1,2,
46、7)=|-+;表格没有轮廓线和分隔线的FORMCHAR=选项:FORMCHAR(1,2,7)=;/*三个空格*/第80页/共89页例16.6按格式化值的顺序排列。procformat;value$sfmt M=maleF=female;procfreqdata=order=formatted;tablesex;formatsex$sfmt.;run;例中,计算数据集中变量SEX的分布,并以格式化值的顺序排列。第81页/共89页 FREQ 过程 累积 累积 Sex 频数 百分比 频数 百分比 -第82页/共89页WEIGHT语句语句 WEIGHTvariable;该语句规定一个WEIGHT变量,
47、它的值表示相应观测的权数。该变量的值应大于零。若这个值0或缺失,假定该值为0。第83页/共89页BY语句语句 BY variable-list;对BY变量定义的观测组分别计算其相应的简单统计量。当使用BY语句时,要求输入数据集已按BY变量排序的次序排列,除非指定NOTSORTED。第84页/共89页OUTPUT语句语句 OUTPUT;v该语句创建一个由PROC FREQ过程输出统计量的SAS数据集。OUTPUT创建的数集可以包括由TABLES语句规定的任意统计量。vPROCFREQ过程每一次只允许使用一个OUTPUT语句。当规定多个TABLES语句时,OUTPUT语句创建的数据集内容对应于最后
48、那个TABLES语句,当一个TABLES语句中规定多个表时,OUTPUT创建的数据集内容对应于最后那个表。选项说明:OUT=规定输出数据集;output-statistic-list规定输出数据集中所包含的统计量。第85页/共89页应用举例应用举例 例16.8随机数频数分析。dataa;doI=1to1000;X=int(uniform(8888)*3)+1;Y=int(uniform(8888)*4)+1;output;end;procfreqdata=a(drop=i);title没有TABLES语句;run;title;procfreq;tablesxx*y/chisq;run;proc
49、freq;tablesx*y/list;run;v 例中,产生区间0,1上均匀分布的随机数1000个,分别将区间0,1均分成3和4个小区间,并把产生的随机数按所属区间转换为整数。然后对这些整数作频数分析。第86页/共89页例16.10对One-Way频率表作卡方检验。procsortdata=;byregion;run;procfreqdata=order=data;weightcount;tableshair/nocumtestp=(301230253);byregion;titleHairColorofEuropeanChildren;run;第87页/共89页创建包含卡方统计量的数据集。
50、optionsnodatepageno=1pagesize=60;procfreqdata=order=data;weightcount;tableseyes*hair/chisqexpectedcellchi2norownocol;outputout=chisqdatpchilrchinnmiss;title Chi-SquareTests for3 by 5 Table of Eye and HairColor;run;procprintdata=chisqdatnoobs;titleChi-SquareStatisticsforEyeandHairColor;title2OutputDa