SAS编程_SET使用小结_070522
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SAS编程中SET命令的常用用法
By 木杉
2007/5/22 一、读入数据集:
从现有的数据集读入数据(obs) ,下例中set将work.a的所有记录写入work.new ;其作用相当于复制数据集a:
data new ;
set a ;
run;
二、合并数据集:
1、一个set的应用,纵向合并数据集:
a) 2个数据集的字段完全相同的情况下:
数据集a:
数据集b:
data new1 ;
set a b ;
by custid;
run;
运行结果:数据集new1
b) 2个数据集的字段不完全相同的情况下:
数据集a:
数据集b:
data new2 ;
set a b ;
by custid;
run;
运行结果:数据集new2
c) 2个数据集的字段完全不同的情况下:数据集a:
数据集b:
data new3 ;
set a b ;
run;
运行结果:数据集new3
2、两个set的应用:用2个set进行数据集的拼接时,新生产数据集(new)的记录条数为2个数据集的最小值;
a) 当2个数据集的字段都不相同情况下:
新生产的数据集包含2个set数据集的所有变量,第2个set数据集(b)的变量排在第1个数据集(a)的右边,如下例:
数据集a:
数据集b:
data new;
set a;
set b;
run;
运行结果:数据集new
b) 当2个数据集有相同字段(custid)情况下:
第2个数据集(b)custid的值覆盖第1个数据集(a)custid的值,新生产数据集new2一共包含2条记录,如下例:
数据集a:
数据集b:
data new2;
set a;
set b;
run;
运行结果:数据集new2
三、Set命令的常用options :
程序举例使用数据集:
Data work.bbb;
Input custid brand fee;
Cards;
1000123 1 300
1000124 2 200
1000134 3 500
1000139 2 100
1000213 3 200
;
Run;
运行结果:
Data c;
Input custid brand fee ;
Cards;
1000126 1 900
1000125 2 800
1000127 1 200
1000128 2 300
;
Run;
运行结果:
1、Keep的使用:仅把keep选定的变量写入新生成的数据集。
Data work.aaa;
Set work.bbb(keep=custid brand ) ;
Run;
运行结果:
2、Drop 的使用:仅把除drop选定的变量以外的变量写入新生成的数据集。
Data work.aaa;
Set work.bbb(drop=fee ) ;
Run;
运行结果:
3、rename 的使用:在读入数据集时对变量进行重命名。
Data work.aaa;
Set work.bbb( rename=(brand=brand_new ) ) ;
Run;
运行结果:
4、Where的使用:仅把满足条件的记录写入新数据集。
Data work.aaa;
Set work.bbb(where=(brand=3 and fee >=200 ) ) ;
Run;
运行结果:
5、Firstobs和obs的使用:在下例中,set语句将work.bbb的第2条到第5条记录写入work.aaa。
Data work.aaa;
Set work.bbb(firstobs=2 obs=5 ) ;
Run;
运行结果:
6、end的使用:end=var定义一个变量var表示一条记录是否为最后一条记录,变量var的值初始化为0,当遇到到最后一个数据集的最后一条记录时值为1。下例运行结果:仅将work.bbb的最后一条记录写入数据集work.fff,因此,wrok.fff只包含1条记录。
data work.fff;
set work.bbb end=last ;
if last then output;
run;
运行结果:
7、point的使用:point=var定义一个指针变量var;下例中定义指针变量i ,运行结果:读取c的第1和第3条记录写入work.fff。
data work.fff;
do i=1to4by2;
set c point=i;
output;
end;
stop;
run;
运行结果:
8、nobs的使用:nobs=var定义一个变量,该变量的值是所有输入数据集记录条数的总和;下例中nobs=last定义一个变量last,其值等于work.bbb和c记录条数的总和。
data work.aaa;
do i=1to last by2 ;
set work.bbb c point=i nobs=last;
output;
end;
stop;