SAS编程_SET使用小结_070522

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档