您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > SAS编程-SET使用小结-070522
华院分析内部参考资料(SAS编程)Copyright©2007byHuaATConfidentialPage1of8SAS编程中SET命令的常用用法By木杉2007/5/22一、读入数据集:从现有的数据集读入数据(obs),下例中set将work.a的所有记录写入work.new;其作用相当于复制数据集a:datanew;seta;run;二、合并数据集:1、一个set的应用,纵向合并数据集:a)2个数据集的字段完全相同的情况下:数据集a:数据集b:datanew1;setab;bycustid;run;运行结果:数据集new1b)2个数据集的字段不完全相同的情况下:华院分析内部参考资料(SAS编程)Copyright©2007byHuaATConfidentialPage2of8数据集a:数据集b:datanew2;setab;bycustid;run;运行结果:数据集new2c)2个数据集的字段完全不同的情况下:数据集a:数据集b:datanew3;setab;run;运行结果:数据集new3华院分析内部参考资料(SAS编程)Copyright©2007byHuaATConfidentialPage3of82、两个set的应用:用2个set进行数据集的拼接时,新生产数据集(new)的记录条数为2个数据集的最小值;a)当2个数据集的字段都不相同情况下:新生产的数据集包含2个set数据集的所有变量,第2个set数据集(b)的变量排在第1个数据集(a)的右边,如下例:数据集a:数据集b:datanew;seta;setb;run;运行结果:数据集newb)当2个数据集有相同字段(custid)情况下:第2个数据集(b)custid的值覆盖第1个数据集(a)custid的值,新生产数据集new2一共包含2条记录,如下例:数据集a:数据集b:datanew2;seta;setb;run;运行结果:数据集new2华院分析内部参考资料(SAS编程)Copyright©2007byHuaATConfidentialPage4of8三、Set命令的常用options:程序举例使用数据集:Datawork.bbb;Inputcustidbrandfee;Cards;1000123130010001242200100013435001000139210010002133200;Run;运行结果:Datawork.ccc;Inputcustidbrandfee;Cards;10001261900100012528001000127120010001282300;Run;运行结果:1、Keep的使用:仅把keep选定的变量写入新生成的数据集。华院分析内部参考资料(SAS编程)Copyright©2007byHuaATConfidentialPage5of8Datawork.aaa;Setwork.bbb(keep=custidbrand);Run;运行结果:2、Drop的使用:仅把除drop选定的变量以外的变量写入新生成的数据集。Datawork.aaa;Setwork.bbb(drop=fee);Run;运行结果:3、rename的使用:在读入数据集时对变量进行重命名。Datawork.aaa;Setwork.bbb(rename=(brand=brand_new));Run;运行结果:4、Where的使用:仅把满足条件的记录写入新数据集。Datawork.aaa;Setwork.bbb(where=(brand=3andfee=200));Run;运行结果:5、Firstobs和obs的使用:在下例中,set语句将work.bbb的第2条到第5条记录写入work.aaa。Datawork.aaa;华院分析内部参考资料(SAS编程)Copyright©2007byHuaATConfidentialPage6of8Setwork.bbb(firstobs=2obs=5);Run;运行结果:6、end的使用:end=var定义一个变量var表示一条记录是否为最后一条记录,变量var的值初始化为0,当遇到到最后一个数据集的最后一条记录时值为1。下例运行结果:仅将work.bbb的最后一条记录写入数据集work.fff,因此,wrok.fff只包含1条记录。datawork.fff;setwork.bbbend=last;iflastthenoutput;run;运行结果:7、point的使用:point=var定义一个指针变量var;下例中定义指针变量i,运行结果:读取work.ccc的第1和第3条记录写入work.fff。datawork.fff;doi=1to4by2;setwork.cccpoint=i;output;end;stop;run;运行结果:8、nobs的使用:nobs=var定义一个变量,该变量的值是所有输入数据集记录条数的总和;下例中nobs=last定义一个变量last,其值等于work.bbb和work.ccc记录条数的总和。datawork.aaa;doi=1tolastby2;setwork.bbbwork.cccpoint=inobs=last;output;end;stop;华院分析内部参考资料(SAS编程)Copyright©2007byHuaATConfidentialPage7of8run;运行结果:9.In的使用:in=var定义一个变量标识读入的一条记录来自哪个数据集,下列程序可实现两个数据集叠加起来之后生成一个新字段datasets_flag来表示记录的来源(数据集),便于筛选。Dataaaa;setbbb(in=a)ccc(in=b);ifa=1thendatasets_flag=bbb;ifb=1thendatasets_flag=ccc;run;运行结果:9、key的使用:key=index根据定义的索引对数据集进行merge,下列程序根据索引custid进行merge,并生成一个标志flag来表示匹配是否正确。Datawork.a(index=(custid));Inputcustidbrandfee;Cards;1000123130010001242200100013435001000139210010002133200;Run;数据集a:华院分析内部参考资料(SAS编程)Copyright©2007byHuaATConfidentialPage8of8Datawork.b(index=(custid));Inputcustidtime;Cards;1000123300100012545010001392601000213370;Run;数据集b:datanew;setwork.a;setwork.bkey=custid;if_error_=1thenflag='wrong';elseflag='right';run;运行结果,数据集new:
本文标题:SAS编程-SET使用小结-070522
链接地址:https://www.777doc.com/doc-5081861 .html