DATA _NULL_默认不输出数据集,也可以在DATA 后面设置多个数据集名称,同时生成多个数据集,与IF ELSE 或者DO END、OUTPUT语句连用或者OUTPUT 语句单独使用,实现将不同的观测值输出不同的数据集内;如:
IF family="Ursidae" THEN OUTPUT bears;
举例说明:
data morning afternoon;
infile "c:\MyRawData\Zoo.dat";
input Animal $ 1-9 Class $ 11-18 Enclosure $ FeedTime $ ;
if FeedTime="am" then output morning;
else if FeedTime=“pm” then output afternoon;
else if feedtime-"both" then output;(表示两个数据集都输出);
run;
proc print data=morning;
title "Animals with Morning Feedings";
run;
proc print data=afternoon;
title "Animals with Afternoon Feedings";
run;
结果如下:
SAS默认在DATA 步的最后隐藏着output语句,data步只有遇见output语句才会输出观测,如果用户不自定义output语句,则data 步默认在最后输出观测;如下所示:
data generate ;
do x=1 to 6;
y=x**2;
output;
end;
run;
如果不在do循环内设置output,则只会在do循环后遇见隐藏的output语句最后一个观测,不会把每次循环的6个观测值输出到数据集。
proc print data=generate;
title "Generated Data";
run;
output 语句在data步的使用如下:
已知数据格式:分别是日期 地址和票数三个变量,需要将每行变成三行观测
使用的语句如下;
data theaters;
infile "c:\myrawdata\movie.dat";
input Month $ Location $ Tickets @;(@表示遇见下一个input 不换行)
output;
input Location $ Tickets $ @;(由于Month 没有被覆盖,所有Month里面的值会保留)
output;
input Location $ Tickets $ ;
output;
run;
proc print data=theaters;
title "Ticket Sales";
run;
结果如下:
SAS的选项多有系统选项(system options)、语句选项(Statement options)、数据集选项(data set options),系统选项在SAS启动时自动设置,对全局产生影响,也可以使用options 语句修改。
数据集选项(dataset options) 往往是影响SAS如何读取或者写入数据集,data-set options 选项可以在DATA ,SET ,MERGE ,UPDATE 或者PROC 步 data = 这些语句中使用,使用方法是在数据集名称后面用括号括起来,如: data example (data-set options),常用的数据集选项有:
KEEP=variable-list (告知SAS哪些变量可以保留)
DROP=variable-list (告知SAS哪些变量可以删除)
RENAME=(oldvar=newvar) (告知SAS对变量重命名)
FIRSTOBS=N (告知SAS从第几行开始读入观测)
OBS=N (告知SAS到第几行开始结束观测)
LABEL="data-set-label" (给数据集加标签)
IN=new-var-name (临时新增新变量名,记录该数据集是否含有某类观测)
WHERE=condition (根据具体条件选择某类观测值)
以下是使用示例:
data selectedvars;
set animals(keep= class species status);
proc print data=animals(drop=habit);
data animals(rename=(class=type habitat=home));
set animals;
proc print data=animals(rename=(class=type habitat=home));
data animals ;
set animals(firstobs=101 obs=202);
proc print data=animals(firstobs=101 obs=202);
(当数据量特别大时,可以使用firstobs= 和obs=选项来选取部分数据来测试SAS程序的准确度)