ImageVerifierCode 换一换
你正在下载:

char07.docx

[预览]
格式:DOCX , 页数:15 ,大小:19.80KB ,
资源ID:4930735      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4930735.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(char07.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

char07.docx

1、char07例7.1 赋值语句举例。proc sort data=fdata.class;by sex; data a;set fdata.class;by sex;n=_N_; error=_error_; first_s=first.sex; last_s=last.sex; proc print;run;x=a+b; /* 规定新变量x,它是a和b的和*/t(2)=sum(of x1-x5); /*规定数组元素,它的值是一函数值*/a=a+b; /*规定一个已经存在的变量a,它的值为原来值和b之和*/例7.2 第一扫描结果的长度不是所有数据中的最大长度时会出错。data a;stocd=

2、0001; /*第一扫描结果的长度为4 */stocd =600001; /*stocd的长度为4,所以显示结果为stocd=6000*/proc print;run;例7.3 用LENGTH语句得到正确输出结果。data a;length stocd 6;stocd=0001;stocd =600001;proc print;run;例7.4 累加语句等于使用SUM函数和一个RETAIN语句。data a (keep=name height s_h);set fdata.class ;s_h+height;proc print;run;data a (keep=name height s_h

3、);set fdata.class ;s_h=sum(s_h, height, 0); retain s_h 0; run;上面两段程序等价。例7.5 表达式SUMX+X*X把X*X的结果加到SUMX上。data a (keep=date uss);set fdata.r_day;uss+r600600*2; /*USS为变量r600600的平方和 */run;例7.6 计算非缺失值的观测个数。data a(keep=nmis);set fdata.indcls;nmis+sector= ;run;例中,NMIS为变量SECTOR非缺失值的观测个数,即按SECTOR分好类股票的个数。例7.7

4、删除部分观测值。data a;set fdata.class;if sex=F then delete;run;例中,删除数据集FDATA中SEX=F的观测值。例7.8 清空数据集。data a;set a;delete;run;例中,删除数据集A中的所有观测值,即清空数据集A。设计复杂程序时,常会用到DELETE语句的这种用法。例7.9 每个数据行都有一个同值的识别变量。data a;input id 1-3 reject #2 idc 1-3 pass; if id ne idc then do;put 数据行错误 id= idc=;lostcard;end;cards;301 32301

5、 61432302 53302 83171400 92845411 46411 99551;proc print;title2 每个观测包含两个数据行;run;例中,二个输入数据行组成一个观测。每行的1-3列包含一个识别数字。当变量id所在的数据行的识别数字不等于变量idc所在数据行的识别数字时,说明有一个数据行被丢失或遗漏了,这时通过PUT语句输出信息并执行LOSTCARD语句。此例中第三个观测(idc=400)的第一个数据行(即id变量所在的行)丢失了。例7.10 每个观测包含3个数据行。data a;input id1 x $ #2 id2 y $ # 3 id3 z $;if id1

6、ne id2 or id2 ne id3 then lostcard;cards;101 A102 B102 B103 C103 C103 C104 D105 E105 E105 E;proc print;title 每个观测包含3个数据行;run;例中,DATA步读3个数据行作为1个观测。第1个观测有2个丢失记录,第2个观测有1个丢失记录,第4个观测丢失2个记录。只有第3和第5个观测是完整的观测。LOG窗口显示的信息:NOTE: LOST CARD.RULE: -+-1-+-2-+-3-+-4-+-5-+-6-+-7-+-8-+-9-+-05 101 A6 102 B7 102 BNOTE:

7、 LOST CARD.8 103 CNOTE: LOST CARD.9 103 CNOTE: LOST CARD.11 104 D12 105 E13 105 ENOTE: 数据集 WORK.A 有 2 个观测和 6 个变量。例7.11 停止处理DATA步。data B_shares;infile d:fdataB_shares.txt firstobs=2 ;input hstocd $ shrsdt shrout;format hstocd $8. shrsdt yymmdd10. shrout 16.;informat hstocd $8. shrsdt yymmdd10. shrout

8、 16.;if _n_=21 then stop;proc print; /*OUTPUT窗口照常打印数据集列表 */run;上面程序也可以用下面一段程序替代:data B_shares;infile d:fdataB_shares.txt firstobs=2 obs=21 ;input hstocd $ shrsdt shrout;format hstocd $8. shrsdt yymmdd10. shrout 16.;informat hstocd $8. shrsdt yymmdd10. shrout 16.;proc print;run;例中,STOP语句不影响后面任意DATA或P

9、ROC的执行。在STOP语句之后继续执行出现的DATA或PROC语句。例7.12 ABORT语句防止输入无效数据时出错。data a;input ssn pay ;if _error_ then abort;cards;111 100aaa 200444 300;proc print;run;例中,如果数据行出错,自动变量_error_ 置为1。如果发现错误,SAS停止处理这些观测。例中,第二个数据行变量ssn包含了无效数据(aaa)。当SAS读这个数据行时,它置_error_为1并执行abort语句。上面数据集只有一个观测。例7.13 控制选择观测时的应用。data a;do n=3,5,7

10、,4;set fdata.class point=n;if _error_=1 then abort;aaa=_error_;output; end;stop;run;例7.14 BETWEEN-AND算符和IS MISSING|IS NULL算符例句。Where hstocd between 600000 and 600899;Where taxes between salary*0.30 and salary*0.50;Where taxes not between salary*0.30 and salary*0.50;Where idnum is missing; /*计算缺失值数目

11、*/Where name is null;LIKE算符的两个特殊模式:百分号(%)可以替代任意多个字符;下划线(_)正好有一个字符与之匹配。进行比较时,LIKE算符识别大写和小写之间的字符。例7.15 设有名字Diana,Diane, Dianna, Dianthus,Dyan. 使用LIKE算符来选择第一个字符为D的名字时,LIKE算符的不同选择模式与结果如下。Like D_an; /* 选择Dyan */Like D_an_; /* 没有名子被选上 */Like D_an_; /* Diana, Diane, Dianna, Dyan */Like D_an%; /*上述列表的所有名字 *

12、/Not like D_an%; /* 没有名子被选上 */实现程序:data;set fdata.wherelike;where name Like D_an; put name;run;data;set fdata.wherelike;where name Like D_an_; put name;run;data;set fdata.wherelike;where name Like D_an_; put name;run;data;set fdata.wherelike;where name Like D_an%; put name;run;data;set fdata.whereli

13、ke;where name Not like D_an%; put name;run;例7.16 使用算符SAME-AND来增加较多的从句到程序中已有的WHERE语句后面,而不需要重新打入原来的从句。proc gplot data=fdata.a1a0001;plot clpr*date=1;where year(date)1996;where same and year(date)2000;run;quit;例7.17 选择数值变量非0和非缺失的观测值。Where x;Where x and y; Where x/y;例7.18 选择字符变量非缺失的观测。Where c= ; where c

14、 is not missing;字符变量C不能单独地作为逻辑表达式。例7.19 选择一定范围内的观测。Where x between 1 and 5; where 1=x=5;例7.20 选择其中一个观测。Where x in(1, 2, 3, 4, 5);例7.21 不能用WHERE语句的情况。data a;set fdata.a000001;where _n_1000; /*错误语句,必须用if */run;data a;set fdata.a000001;if _n_1000;run;例中,不能用WHERE语句控制SAS的自动变量时。例7.22 由一个输入数据行创建多个观测。data A

15、;input ID $ score1- score3;drop score1- score3;score=score1; output;score=score2; output;score=score3; output;cards;02126 99 96 9402128 89 90 88;proc print;run;例中,每一行记录生成三个观测。每个新观测将包括代号ID和一次测验值SCORE.例7.23 一个DATA步创建多个数据集。data F M;set fdata.class;if sex=F then output F;else if sex=M then output M;run;

16、例中,一个DATA步创建两个数据集。数据集F包含变量SEX为F的所有观测;数据集M包含变量SEX不是F的所有观测。例7.24 一个DATA步创建多个数据集。data age1 age2;input name $ age;if age 15 then output age1;else output age2;cards;Alice 13Gail 14Mary 15Sandy 11Philip 16Robert 12Thomas 11William 15;run;例中,一个DATA步创建两个数据集。数据集AGE1包含变量AGE=15的所有观测。例7.25 由几个记录组合信息。proc sort d

17、ata=fdata.dd_c;by date;data a;set fdata.dd_c ;by date;if first. date then sum_c=0;sum_c+sum;keep date sum_c ;if last.date then output;run;例中,对数据集计算1999年活期每日存款总额。这样的方法是不是简单快捷。这个例子很有用,从这里也认识了自动变量:first. date 和last. date的使用方法。数据处理时用这个语句会很省力。例7.26 上例可以用MEANS过程来实现。proc sort data=fdata.dd_c;by date;proc m

18、eans data=fdata.dd_c noprint;by date;var sum;output out=sum sum=sum_c;run;例7.27 从某个SAS数据集中移走一个观测。data fdata.accounts;input acctnum credit;cards;1001 15001002 49001003 3000;data fdata.Accounts;modify fdata.Accounts;if acctnum=1002 then remove; /*移走acctnum=1002的观测 */proc print data= fdata.Accounts;tit

19、le Edited Data Set;例7.28 应用举例。data master;input name $ id $ phonenum;cards;Kevin 1100100 3750066 Sandi 11000001 3756666 Cindy 11000002 6758966 Jim 11000003 6750088 ;data trans;input name $ id $ phonenum;cards;. 1100100 83750066. 11000001 83756666Vivan 21000001 83750387;data master;modify master tran

20、s;by id ;if _iorc_=%sysrc (_sok) then replace; /*在master中找到观测进行替代 */else if _iorc_=%sysrc (_dsenmr) then do;error=0; _iorc_=0;output;end;run;proc print data=master;title 含有新电话号码的数据集MASTER;run;例中,用数据集TRANS 中的值更新数据集MASTER中的电话号码,增加一个观测到数据集MASTER的结尾。SYSRC对MASTER每次试图重新得到一个_IORC_的值,自动调用宏检验。例7.29 规定缺失值字符。d

21、ata period_a;missing X I;input Id $4. Foodpr1 Foodpr2 Foodpr3 Coffeem1 Coffeem2;datalines;1001 115 45 65 I 781002 86 27 55 72 861004 93 52 X 76 881015 73 35 43 112 1081027 101 127 39 76 79 ;例中,MISSING语句规定用字符X和I表示缺失值。如果不用MISSING语句,当读入数值变量的缺失值时(这里为X和I),就要产生错误。例7.30 用INPUT语句读入可疑数据行时使用LIST语句。data a;input x y;if x19 then error type and age dont macth age=;cards;Wu teen 20Li teen 12Cindy adult 28;data a;input name $ type $ age ;if type=teen & age 19 then do;put type and age dont macth age=;_error_=1;end;cards;Wu teen 20Li teen 12Cindy adult 28;run;上面两段程序的结果相同。第一段用ERROR语句,第二段用PUT和_ERROR_语句。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1