数据结构域算法设计.数据集排序合并更新

上传人:woxinch****an2018 文档编号:53978781 上传时间:2018-09-06 格式:PPT 页数:60 大小:968.50KB
返回 下载 相关 举报
数据结构域算法设计.数据集排序合并更新_第1页
第1页 / 共60页
数据结构域算法设计.数据集排序合并更新_第2页
第2页 / 共60页
数据结构域算法设计.数据集排序合并更新_第3页
第3页 / 共60页
数据结构域算法设计.数据集排序合并更新_第4页
第4页 / 共60页
数据结构域算法设计.数据集排序合并更新_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《数据结构域算法设计.数据集排序合并更新》由会员分享,可在线阅读,更多相关《数据结构域算法设计.数据集排序合并更新(60页珍藏版)》请在金锄头文库上搜索。

1、数据集排序合并管理,一、数据集排序及BY组,语句格式PROC SORT data=输入数据集 ;BY variable1 variable2 ; BY语句指定需要排序的变量,数据集将按此变量排序 descending选项:表示该选项之后的一个变量按降序对记录排序;若省略引选项,则按升序对记录排序 Data=输入数据集,即需要排序的数据集 Out=输出数据集,即排序之后的数据集,例,按指定变量排序,data account;input Company $ 1-22 Debt 25-30 AccNum 33-36 Town $ 39-51;cards; Pauls Pizza 83.00 1019

2、 Apex World Wide Electronics 119.95 1122 Garner Strickland Industries 657.22 1675 Morrisville Ice Cream Delight 299.98 2310 Holly Springs Watson Tabor Travel 37.95 3131 Apex Boyd ,排序之后结果,BY语句在数据步中使用,数据步中,BY语句规定分组变量。用于控制SET, MERGE, UPDATE或MODIFY语句的操作 在数据步使用时,需先进行排序操作语句格式BY variable1 variable2 ; 数据集中连

3、续相同的BY值构成BY组,数据集排序,定义BY组,data tsort;input x1 x2 x3$;cards; 1 3 a 2 2 b 1 2 b 2 1 c 4 1 e 3 2 g 4 1 d 1 3 w 4 2 b 4 2 b ; proc sort data=tsort;by x1 x2; run;,定义BY组 data tsortA;set tsort;by x1 x2; /*定义BY组*/ run;,数据步BY组示意,by x1 x2; /*定义BY组*/,连续相同BY值(颜色相同)为同一BY组,检测BY组的起始和结束位置,SAS系统对每个BY组创建两个自动变量:First.变

4、量和Last.变量,用来标识每个BY组的第一个和最后一个观测。 对于一个BY组的第一个观测值,First.变量=1,其余取0. 对于一个BY组的最后一个观测值,Last.变量=1,其余取0. 这些变量不含在新产生的数据集中,SAS生成自动变量检测BY组 FIRST.变量 LAST.变量,例,BY组起始位置,proc sort data=tsort;by x1 x2; run;data tsortA;set tsort;by x1 x2;x1byfirst=first.x1; /*X1 BY组起始取值,1为起始,0其它*/x1bylast=last.x1; /*X1 BY组结束取值,1为结束,0

5、其它*/x2byfirst=first.x2; /*X2 BY组起始取值,1为起始,0其它*/x2bylast=last.x2; /*X2 BY组结束取值,1为结束,0其它*/ run;proc print; run;,例,BY组起始位置,Obs x1 x2 x3 x1byfirst x1bylast x2byfirst x2bylast1 1 2 b 1 0 1 12 1 3 a 0 0 1 03 1 3 w 0 1 0 14 2 1 c 1 0 1 15 2 2 b 0 1 1 16 3 2 g 1 1 1 17 4 1 e 1 0 1 08 4 1 d 0 0 0 19 4 2 b 0

6、0 1 010 4 2 b 0 1 0 1,对比观察BY组和自动变量取值,x1 BY组,x2 BY组,data a;set tsort; by x1 x2;if last.x1; /*保留X1组中最后一个观测值 */ run;,例,保留各BY组中最后一个观测值,Obs x1 x2 x3 x1byfirst x1bylast x2byfirst x2bylast1 1 2 b 1 0 1 12 1 3 a 0 0 1 03 1 3 w 0 1 0 14 2 1 c 1 0 1 15 2 2 b 0 1 1 16 3 2 g 1 1 1 17 4 1 e 1 0 1 08 4 1 d 0 0 0

7、19 4 2 b 0 0 1 010 4 2 b 0 1 0 1,例,保留各BY组中第一个观测值,data b;set tsort; by x1 x2;if first.x2; /*保留X2组中第一个观测值 */ run;,Obs x1 x2 x3 x1byfirst x1bylast x2byfirst x2bylast1 1 2 b 1 0 1 12 1 3 a 0 0 1 03 1 3 w 0 1 0 14 2 1 c 1 0 1 15 2 2 b 0 1 1 16 3 2 g 1 1 1 17 4 1 e 1 0 1 08 4 1 d 0 0 0 19 4 2 b 0 0 1 010

8、4 2 b 0 1 0 1,二、读取SAS数据集- SET语句,SET语句从一个或多个已存在的SAS数据集中读取观测值,并将这些观测组合在一个数据集中。 语句格式:SET ;一个DATA步中可以有多个SET语句,一个SET语句中可以有任个SAS数据集。,选项说明,例,利用Point=选项读取指定观测,data a; set account ; obs=_n_;data b;do i=3,5,7,4;set a point=i; /*读入数据集a中的第3,5,7,4观测 */if _error_=1 then abort;output;end; stop; /*使用选项point=时,经常要用s

9、top语句来终止data步的执行*/ run;proc print; run;,例,利用NOBS=选项获取观测总数,data acc; set account ; obs=_n_;data a;do i=1 to last by 2; /*临时变量为last */set acc point=i nobs=last;output;end;stop; run;proc print; run;,获取数据集的观测总数data a;set account nobs=mynum;total_obs=mynum; /*保存临时变量*/run;获取数据集的最后一个观测 data a;set account n

10、obs=mynum;if _n_=mynum; /*最后一个观测*/run;,例,利用END=选项获取最后一个观测,data acc; set account ; obs=_n_;data a;set acc end=last_obs;if last_obs=1; run;proc print; run;,Data total;set a1 a2 a3;run; Data total;set a1(in=i1) a2(in=i2) a3(in=i3);if i1=1 then source=1;if i2=1 then source=2;if i3=1 then source=3;run; 将a1 a2 a3数据集合并为一新的数据集total, 变量Source记录每条观测的来源,SET语句读取多个数据集,相同变量的数据集串接设:数据集a1与a2含有三个相同的变量,且a1中有3个观测,a2中有2个观测。 试:将数据集a1、a2纵向合并起来。 程序:,Data both; Set a1 a2; Run;,数据集a1 x1 x2 x3 1 2 5 3 1 4 6 3 2,数据集a2 x1 x2 x3 12 34 9 15 23 8,数据集both x1 x2 x3 1 2 5 3 1 43 2 12 34 9 15 23 8,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

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