五:set语句
1.keep和drop指定变量进入或者不进入pdv
eg:
Data d1(keep=name)
Run;
注:
黄色部分标示只有name
红色部分表示对变量进行重命名
灰色部分代表对变量进行筛选
绿色部分代表从第三个记录读到第五个记录
2.关于in 的应用
Data in1;
Set one(in=ina)
In_one=ina;
In_two=inb;
Run;
一个关于in的应用:
Data in2;
Set one(in=ina)
Run;
3.nobs和point的应用
data nobs;
set fvr.test1 nobs=obs_total;
total=obs_total;
output;
stop;
run;
绿色部分是将观测数传送给临时变量obs_total;
上述语句只会返回数据集的第一条记录
Data point1;
Run;
注:point和nobs一样,后面都要跟变量,而不能是常量;
Point语句必须与stop语句一起使用,凡是出现point语句必须出现stop语句,否则容易陷入死循环
point和nobs语句是相互独立的,point语句是在pdv之后,而nobs语句是咋pdv 之前;
下面一个综合应用(获取数据集最后一条记录):
Data nobs_point;
Set fvr.test1 nobs=last
Output;
Stop;
Run;
程序解读:编译时nobs=对应数据信息(总观测条数),会传给last临时变量;
接下来程序读入test1进入pdv,读到point=选项时,数据指针会获取last的值,指针会直接指向last对应的观测值,
最后输出该观测值;停止data步的执行;
上述方法是获取数据集最后一条记录最快速的方法,
像下面的语句:
Data zhu;
Run;
显然这个代码需要将数据集全部读入pdv,显然是不经济的
4.输出多个数据集;
Data
Run ;
观测序号小于或者等于10的输入到d1,否则到d2