char07Word文档格式.docx

上传人:b****4 文档编号:17884125 上传时间:2022-12-11 格式:DOCX 页数:15 大小:19.80KB
下载 相关 举报
char07Word文档格式.docx_第1页
第1页 / 共15页
char07Word文档格式.docx_第2页
第2页 / 共15页
char07Word文档格式.docx_第3页
第3页 / 共15页
char07Word文档格式.docx_第4页
第4页 / 共15页
char07Word文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

char07Word文档格式.docx

《char07Word文档格式.docx》由会员分享,可在线阅读,更多相关《char07Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

char07Word文档格式.docx

上面两段程序等价。

例7.5表达式SUMX+X*X把X*X的结果加到SUMX上。

dataa(keep=dateuss);

setfdata.r_day;

uss+r600600**2;

/*USS为变量r600600的平方和*/

例7.6计算非缺失值的观测个数。

dataa(keep=nmis);

setfdata.indcls;

nmis+sector^=’‘;

例中,NMIS为变量SECTOR非缺失值的观测个数,即按SECTOR分好类股票的个数。

例7.7删除部分观测值。

ifsex=’F’thendelete;

例中,删除数据集FDATA中SEX=F的观测值。

例7.8清空数据集。

seta;

delete;

例中,删除数据集A中的所有观测值,即清空数据集A。

设计复杂程序时,常会用到DELETE语句的这种用法。

例7.9每个数据行都有一个同值的识别变量。

inputid1-3reject#2idc1-3pass;

ifidneidcthendo;

put‘数据行错误’id=idc=;

lostcard;

end;

cards;

30132

30161432

30253

30283171

40092845

41146

41199551

title2‘每个观测包含两个数据行’;

例中,二个输入数据行组成一个观测。

每行的1-3列包含一个识别数字。

当变量id所在的数据行的识别数字不等于变量idc所在数据行的识别数字时,说明有一个数据行被丢失或遗漏了,这时通过PUT语句输出信息并执行LOSTCARD语句。

此例中第三个观测(idc=400)的第一个数据行(即id变量所在的行)丢失了。

例7.10每个观测包含3个数据行。

inputid1x$#2id2y$#3id3z$;

ifid1neid2orid2neid3thenlostcard;

101A

102B

103C

104D

105E

title‘每个观测包含3个数据行’;

例中,DATA步读3个数据行作为1个观测。

第1个观测有2个丢失记录,第2个观测有1个丢失记录,第4个观测丢失2个记录。

只有第3和第5个观测是完整的观测。

LOG窗口显示的信息:

NOTE:

LOSTCARD.

RULE:

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0

5101A

6102B

7102B

8103C

9103C

11104D

12105E

13105E

数据集WORK.A有2个观测和6个变量。

例7.11停止处理DATA步。

dataB_shares;

infile"

d:

\fdata\B_shares.txt"

firstobs=2;

inputhstocd$shrsdtshrout;

formathstocd$8.shrsdtyymmdd10.shrout16.;

informathstocd$8.shrsdtyymmdd10.shrout16.;

if_n_=21thenstop;

/*OUTPUT窗口照常打印数据集列表*/

上面程序也可以用下面一段程序替代:

\fdata\B_shares.txt"

firstobs=2obs=21;

例中,STOP语句不影响后面任意DATA或PROC的执行。

在STOP语句之后继续执行出现的DATA或PROC语句。

例7.12ABORT语句防止输入无效数据时出错。

inputssnpay;

if_error_thenabort;

111100

aaa200

444300

例中,如果数据行出错,自动变量_error_置为1。

如果发现错误,SAS停止处理这些观测。

例中,第二个数据行变量ssn包含了无效数据(aaa)。

当SAS读这个数据行时,它置_error_为1并执行abort语句。

上面数据集只有一个观测。

例7.13控制选择观测时的应用。

don=3,5,7,4;

setfdata.classpoint=n;

if_error_=1thenabort;

aaa=_error_;

output;

stop;

例7.14BETWEEN-AND算符和ISMISSING|ISNULL算符例句。

Wherehstocdbetween600000and600899;

Wheretaxesbetweensalary*0.30andsalary*0.50;

Wheretaxesnotbetweensalary*0.30andsalary*0.50;

Whereidnumismissing;

/*计算缺失值数目*/

Wherenameisnull;

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%’;

/*上述列表的所有名字*/

Notlike‘D_an%’;

实现程序:

data;

setfdata.wherelike;

wherenameLike'

D_an'

putname;

D__an_'

D_an__'

D_an%'

wherenameNotlike'

例7.16使用算符SAME-AND来增加较多的从句到程序中已有的WHERE语句后面,而不需要重新打入原来的从句。

procgplotdata=fdata.a1a0001;

plotclpr*date=1;

whereyear(date)>

1996;

wheresameandyear(date)<

2000;

quit;

例7.17选择数值变量非0和非缺失的观测值。

Wherex;

Wherexandy;

Wherex/y;

例7.18选择字符变量非缺失的观测。

Wherec^=’’;

wherecisnotmissing;

字符变量C不能单独地作为逻辑表达式。

例7.19选择一定范围内的观测。

Wherexbetween1and5;

where1<

=x<

=5;

例7.20选择其中一个观测。

Wherexin(1,2,3,4,5);

例7.21不能用WHERE语句的情况。

setfdata.a000001;

where_n_<

1000;

/*错误语句,必须用if*/

if_n_<

例中,不能用WHERE语句控制SAS的自动变量时。

例7.22由一个输入数据行创建多个观测。

dataA;

inputID$score1-score3;

dropscore1-score3;

score=score1;

output;

score=score2;

score=score3;

02126999694

02128899088

例中,每一行记录生成三个观测。

每个新观测将包括代号ID和一次测验值SCORE.

例7.23一个DATA步创建多个数据集。

dataFM;

ifsex=’F’thenoutputF;

elseifsex=’M’thenoutputM;

例中,一个DATA步创建两个数据集。

数据集F包含变量SEX为’F’的所有观测;

数据集M包含变量SEX不是’F’的所有观测。

例7.24一个DATA步创建多个数据集。

dataage1age2;

inputname$age;

ifage<

15thenoutputage1;

elseoutputage2;

Alice13

Gail14

Mary15

Sandy11

Philip16

Robert12

Thomas11

William15

数据集AGE1包含变量AGE<

15的所有观测,数据集AGE2包含变量AGE>

=15的所有观测。

例7.25由几个记录组合信息。

procsortdata=fdata.dd_c;

bydate;

setfdata.dd_c;

iffirst.datethensum_c=0;

sum_c+sum;

keepdatesum_c;

iflast.datethenoutput;

例中,对数据集计算1999年活期每日存款总额。

这样的方法是不是简单快捷。

这个例子很有用,从这里也认识了自动变量:

first.date和last.date的使用方法。

数据处理时用这个语句会很省力。

例7.26上例可以用MEANS过程来实现。

procmeansdata=fdata.dd_cnoprint;

varsum;

outputout=sumsum=sum_c;

例7.27从某个SAS数据集中移走一个观测。

datafdata.accounts;

inputacctnumcredit;

10011500

10024900

10033000

datafdata.Accounts;

modifyfdata.Accounts;

ifacctnum=1002thenremove;

/*移走acctnum=1002的观测*/

procprintdata=fdata.Accounts;

title’EditedDataSet’;

例7.28应用举例。

datamaster;

inputname$id$phonenum;

Kevin11001003750066

Sandi110000013756666

Cindy110000026758966

Jim110000036750088

datatrans;

.110010083750066

.1100000183756666

Vivan2100000183750387

modifymastertrans;

byid;

if_iorc_=%sysrc(_sok)thenreplace;

/*在master中找到观测进行替代*/

elseif_iorc_=%sysrc(_dsenmr)thendo;

error=0;

_iorc_=0;

procprintdata=master;

title'

含有新电话号码的数据集MASTER'

例中,用数据集TRANS中的值更新数据集MASTER中的电话号码,增加一个观测到数据集MASTER的结尾。

SYSRC对MASTER每次试图重新得到一个_IORC_的值,自动调用宏检验。

例7.29规定缺失值字符。

dataperiod_a;

missingXI;

inputId$4.Foodpr1Foodpr2Foodpr3Coffeem1Coffeem2;

datalines;

10011154565I78

10028627557286

10049352X7688

1015733543112108

1027101127397679

;

例中,MISSING语句规定用字符X和I表示缺失值。

如果不用MISSING语句,当读入数值变量的缺失值时(这里为X和I),就要产生错误。

例7.30用INPUT语句读入可疑数据行时使用LIST语句。

inputxy;

ifx<

0thenlist;

26

42

-12

-46

例7.31产生声音。

data_null_;

callsound(20,800);

/*每秒产生20次声音,每次时间为800*1/80秒*/

例中,频率为20,即每秒发生20次。

持续时间为800*1/80秒。

例7.32创建包含DATA信息的宏变量。

callsymput(‘text1’,‘march’);

/*将march赋给宏变量text1*/

callsymput(‘beta’,100);

/*将100赋给宏变量beta*/

procregdata=fdata.r_monthoutest=estnoprint;

modelr600600=rm;

dataest;

setest;

callsymput(‘beta01’,intercept);

/*创建一个值来自DATA步的宏变量beta01*/

callsymput(‘beta11’,rm);

/*创建一个值来自DATA步的宏变量beta11*/

callsymput(‘sigma1’,_rmse_);

例7.33发布操作系统命令。

callsystem('

dir*.sas'

);

/*发布和操作系统命令dir*.sas*/

例7.34空语句表示数据行结束。

inputxyz;

ifx=.Thengotofind;

list;

find:

dropx;

125

.13

258

.39

在这个DATA步,CARDS语句告诉SAS系统在这个作业流中,紧跟着的是数据行,当SAS遇到空语句(;

)时,就知道数据行结束了。

上例中的空语句也可以省略,因数据行后面第一个语句(PROCPRINT;

)中包含一个分号。

例7.35应用举例。

inputname$type$age;

iftype='

teen'

&

age>

19thenerror'

typeandagedon"

tmacth'

age=;

Wuteen20

Liteen12

Cindyadult28

19thendo;

put'

_error_=1;

上面两段程序的结果相同。

第一段用ERROR语句,第二段用PUT和_ERROR_语句。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

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

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