ATA步数据集操.ppt
《ATA步数据集操.ppt》由会员分享,可在线阅读,更多相关《ATA步数据集操.ppt(115页珍藏版)》请在三一办公上搜索。
1、清华大学经济管理学院 朱世武,Zhu ShiwuSchool of Economics and Management,Tsinghua University,第4章 DATA数据集操作(核心),本章内容提要,创建数据集语句DATA数据行引导语句CARDS与CARDS4输出语句PUT读入已存在SAS数据集语句SET横向合并数据语句MERGEBY语句删除变量语句DROP与保留变量语句KEEP更改变量名语句RENAME与保留数值语句RETAIN输出外部文件语句FILE定义外部数据文件语句INFILE更新数据语句UPDATE(不讲)修改数据语句MODIFY(不讲)数据导出,创建数据集语句DATA,语句
2、格式 DATA;DATA view-name/VIEW=view-name);DATA data-set-name/PGM=program-name);DATA PGM=program-name();DATA VIEW=view-name();DESCRIBE;,选项说明,这里只给出常用选项的说明,其它选项说明可以从SAS系统帮助中查找。,例4.1 规定要创建的SAS数据集。data;/*系统自动规定数据集名datan*/Data a;/*创建临时数据集a*/data ResDat.a;/*创建永久数据集resdat.a*/data data1 data2;/*创建两个临时数据集data1和d
3、ata2*/data _null_;/*特殊名,不创建SAS数据集,用于输出*/Run;,例4.2 数据集选项举例。data new(drop=var1);/*去掉数据集new中变量var1*/data new(keep=_numeric_);/*保留数据集new中所有数值变量*/data new(label=股本变动历史);/*规定数据集new标签名为”股本变动历史”*/data new(rename=(var1=u var2=v);/*将数据集new中变量var1和var2更名为u和v*/data book(index=(author subject);/*数据集book对变量author
4、 subject建立索引*/,例4.3 创建DATA步数据视窗文件。data class/view=class;set Resdat.class;run;例4.4 存储被编辑程序。data class1(keep=name age weight)/pgm=cl;/*cl是被存贮的SAS程序*/set ResDat.class;run;,NOTE:已在文件 CL 中保存了 DATA STEP 程序。NOTE:存储的 DATA STEP 程序无法在不同的操作系统下运行。,例4.5用DATA步执行一个被存贮的编辑程序。data pgm=cl;Run;,NOTE:DATA STEP 程序加载自文件CL
5、。NOTE:从数据集 RESDAT.CLASS.读取了 19 个观测NOTE:数据集 CLASS1 有 19 个观测和 3 个变量。,特殊数据集名,_data_(省略数据集名),data _data_;/*等价于语句data;*/系统自动为数据集赋名:data1,data2,datan.,_null_一般和PUT语句一起用。由PUT输出结果,只输出到LOG窗口,不会产生SAS数据集。,80 data _null_;81 x=exp(5);82 y=log(10);83 put x=y=;84 run;x=148.4131591 y=2.302585093NOTE:“DATA 语句”所用时间(总
6、处理时间):实际时间 0.03 秒 CPU 时间 0.00 秒,例4.6 不产生数据集。data _null_;x=exp(5);y=log(10);put x=y=;run;,_last_ _last_是SAS系统的一个自动变量,取值为最新创建的SAS数据集名。,例4.7 查看最新创建的SAS数据集。data a;set _last_;run;,一个DATA语句下多个数据集名,例4.8 观测子集的形成。data FemaleSt MaleSt;set ResDat.class;if sex=F then output FemaleSt;else output MaleSt;run;,例中,根
7、据条件产生2个观测子集,名字分别为女同学信息数据集FemaleSt和男同学信息数据集MaleSt。,例4.9 变量子集的形成。data height(keep=name height)weight(keep=name weight);set ResDat.class;run;,一个DATA语句下多个数据集名,例中,根据条件产生2个变量子集,名子分别为height,weight,每个数据集由KEEP语句保留两个变量。,数据行引导语句CARDS与CARDS4,CARDS语句或DATALINES语句告诉SAS系统下面跟着的是数据行。数据行之前用CARDS语句或DATALINES语句。语句格式:CAR
8、DS;或DATALINES;数据行,例4.10 数据行之前用CARDS语句。data;input var1 var2 var3$;cards;16 20 First;,数据行中含有分号时,必须用CARDS4或DATALINES4语句。语句格式:Cards4;或DATALINES4;数据行;,例4.11 数据行中含有分号时用CARDS4语句。data;input var1$var2$var3$;cards4;A;B(;);,Obs var1 var2 var3 1 A;B 2(;),结果如下:,输出语句PUT,PUT语句输出信息到:SAS系统的LOG窗口;SAS系统的OUTPUT窗口;FILE语
9、句规定的外部文件。,简单方式:PUT;PUT;列方式:PUT start-column;格式化方式:PUT start-column;PUT variable format.;PUT(variable-list)(format-list);列表方式:PUT variable;PUT character-string;PUT variable format.;命名方式:PUT variable=;PUT variable=start-column;,语句格式,选项说明,表4.1 变量及其格式说明,例4.12用PUT语句产生的输出结果及其比较。data _null_;put 132*_;/*在lo
10、g窗口输出132个下划线_*/put 100*1;/*在log窗口输出100个1*/run;data _null_;input x y z;put _infile_;/*输出最新的数据行到SAS Log窗口*/cards;1-5 90 3 710 2 8;run;,LOG窗口输出结果:,data _null_;input x y z;put _all_;cards;1-5 90 3 710 2 8;,LOG窗口输出结果:,例4.13其它控制输出格式举例。Proc sort data=sashelp.class out=class;By sex;Run;data _null_;Set class
11、;by sex;file print;put name 1-8 12 sex;if last.sex then put/This is the last of sex$_page_;run;,第一页,第二页,输出窗口显示:,Alice FBarbara FCarol FJane FJanet FJoyce FJudy FLouise FMary FThis is the last of F,Alfred MHenry MJames MJeffrey MJohn MPhilip MRobert MRonald MThomas MWilliam MThis is the last of M,dat
12、a;put Example of overprint overprint-;run;,LOG窗口输出结果:,Example of overprint-,列方式输出,LOG窗口输出结果:100.00 300.000,例4.14 控制输出的列位置。data a;a=100;b=300;put a 10-16.2 b 20-26.3;run;,语句格式:PUT start-column;,列表方式输出,语句格式:PUT variable;PUT character-string;PUT variable format.;修饰符说明:n*规定后面格式重复n次;:规定后面格式输出变量值时去掉前后的空格。
13、,LOG窗口输出结果:134,569.24 18,969.06 3,592.19,例4.15应用举例。data a;x1=134569.236;x2=18969.06;x3=3592.191;put(_all_)(3*comma10.2);run;,data a;x1=134569.236;x2=18969.06;x3=3592.191;put _all_;run;,格式化输出,语句格式:PUT start-column;PUT variable format.;PUT(variable-list)(format-list);,例4.16应用举例。data a;input name,LOG窗口
14、输出结果:53 data a;54 input name,上面程序也可以写成:data a;input name 但第一种方法的效果好。,LOG窗口输出结果:61 data a;62 input name,读入已存在SAS数据集语句SET,SET语句从一个或多个已存在的SAS数据集中读取观测值,并将这些观测组合在一个或多个新的数据集中。语句格式:SET/UNIQUE;一个DATA步中可以有多个SET语句,一个SET语句中可以有任个SAS数据集。,选项说明,例4.17选项说明若干举例。规定临时变量选项Point=:data a;set ResDat.class;obs=_n_;data;do n
15、=3,5,7,4;set a point=n;/*读入数据集a中的第3,5,7,4观测*/output;end;stop;/*使用选项point=时,经常要用stop语句来终止data步的执行*/proc print;run;使用选项point=时,经常要用stop语句来终止data步的执行。因为使用set语句时,指针只有在遇到数据集的最后一条观测才会停止执行,而这里选择读入的最后一条观测一般情况下并不是数据集的最后一条观测,所以,需要专门用stop语句停止指针执行,否则会陷入死循环。,去掉stop语句:do end 循环不能让指针达到最后一条观测值,set语句会让循环持续执行,形成死循环。d
16、ata;do n=3,5,7,4;set a point=n;/*读入数据集a中的第3,5,7,4观测*/output;end;run;使用中断工具终止程序运行。,data;set a;do n=3,5;output;end;run;/*n在新创建的数据集中*/,例4.18 连续两个set语句。data one;input x y$;cards;1 Groucho3 Harpo5 Kart;data two;input X Z$;cards;2 Chico4 Zeppo;Data three;Set one;Set two;Run;,数据集one:X Y 1 Groucho3 Harpo5 K
17、art,数据集two:X Z2 Chico4 Zeppo,数据集three:X Y Z2 Groucho Chico4 Harpo Zeppo,例4.19 数据集选项in=var。data a;set one(in=one)two(in=two);in1=one;in2=two;run;,数据集a:,规定临时变量选项NOBS=:data a;do obsnum=1 to last by 3;/*临时变量为last*/set ResDat.class point=obsnum nobs=last;output;end;stop;run;,如何找数据集的观测个数:data a;a=nobs;set
18、 ResDat.class nobs=nobs;if _n_=a;run;如何找数据集的最后一个观测值:data a;set ResDat.class nobs=nobs;if _N_=NOBS;run;,找数据集最后一个观测值更简单的方法:data a;set ResDat.class end=obs_last;if obs_last=1;run;输出数据集的最后一个观测值:data a;set ResDat.class End=lastobs;if lastobs;x=lastobs;/*将临时变量lastobs的值赋给X*/put last observation:_all_;run;,
19、例4.20 数据集选项说明若干举例。保留部分变量:data a;set ResDat.Class(keep=name sex age);run;data b(keep=name sex age);set ResDat.Class;run;data c;set ResDat.Class;keep name sex age;run;上述三段程序的结果相同。注意,但第三段程序用的是KEEP语句,并不是数据集选项的应用。保留部分变量时可生成多个变量子集,如下:data weight(keep=name weight)height(keep=name height);set ResDat.class;r
20、un;/*此程序将保留变量同时生成两个变量子集*/,保留部分观测:data males;set ResDat.class;where sex=M;run;data males;set ResDat.class;if sex=M then output;run;data males;set ResDat.class;if sex=M then delete;run;,data FemaleSt MaleSt;set ResDat.class;if sex=F then output FemaleSt;else if sex=M then output MaleSt;run;/*此程序将保留部分观
21、测同时生成两个观测子集*/,保留部分观测时可生成多个观测子集,如下:,例4.21数据的纵向合并,相同变量的数据集合并。data qttn;set ResDat.stk000001 ResDat.stk000002;run;例4.22数据的纵向合并,不同变量的数据集合并。data a;set ResDat.class ResDat.stk000001;run;,例4.23 按顺序交替连接数据。data xyz;input id$x y z;cards;A 12 3 45 B 11 2 34C 10 4 76D 23 7 16;data uvw;input id$u v w;cards;A 20
22、5 50 B 12 3 32C 16 8 99D 27 11 15;,proc sort data=xyz;by id;proc sort data=uvw;by id;run;data a;set xyz uvw;by id;proc print noobs;run;,结果显示:,横向合并数据集语句MERGE,MERGE语句将多个数据集中的观测合并为新数据集中的一个观测。SAS系统合并观测的方式依赖于BY语句的使用。语句格式 MERGE data-set-name-1 data-set-name-2;,选项说明,应用举例,例4.24 一对一合并 data a;merge ResDat.cla
23、ss ResDat.stk000001;run;例中,一对一合并时,不需要BY语句。例4.25 匹配合并 data a;merge ResDat.stk000001(keep=date clpr rename=(clpr=clpr000001)ResDat.stk000002(keep=date clpr rename=(clpr=clpr000002);by date;run;例中,匹配合并必须有BY语句。,例4.26 使用数据集选(in=),选择股票代码为000001,200011,600601和900903的首次发行与上市数据。data stkcd;input stkcd$6.;card
24、s;000001 200011600601900903;data iissulst1;merge resdat.iissulst stkcd(in=id);if id;/*选择满足条件股票的首次发行与上市数据*/by stkcd;run;,BY语句,数据步中,BY语句规定分组变量。用于控制SET,MERGE,UPDATE或MODIFY语句的操作。语句格式 By Variable-1 Variable-N;,选项说明 BY语句概念,FIRST.变量和LAST.变量,SAS系统对每个BY组创建两个自动变量:First.variable 和 Last.variable,用来标识每个BY组的第一个和最
25、后一个观测。对于一个BY组的第一个观测值,First.variable取1,其余取0.对于一个BY组的最后一个观测值,Last.variable取1,其余取0.这些变量不含在新产生的数据集中。,例4.28 保留各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;,删除变量语句DROP与保留变量语句KEEP,DROP语句
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ATA 数据
链接地址:https://www.31ppt.com/p-5415957.html