SAS的输出系统(Output Delivery System),缩写为ODS.每个SAS过程创建输出对象(output objects),输出对象能够被导出到HTML,RTF,PDF和SAS数据集等目的地。
1.导出到HTML.
打算将print和means的结果导出到HTML,两条语句搞定。
ods html file='c:"books"learning"sample.html';
title "Listing of TEST_SCORES";
proc print data=learn.test_scores;
title2 "Sample of HTML Output - all defaults";
id ID;
var Name Score1-Score3;
run;
title "Descriptive Statistics";
proc means data=learn.test_scores n mean min max;
var Score1-Score3;
run;
ods html close;
在过程的开始设置ODS HTML FIEL,在结束时ODS HTML CLOSE.以FILENAME指定文件名。
将上述语句中的HTML分别置换为RTF或PDF,就能分别创建rtf或pdf格式文档了。
2.选择或排除部分输出
使用ODS SELECT 或ODS EXCLUDE 选择或排除所输出的部分。
假设你想使用proc univariate输出某个变量的前5个最大值和后5个最小值。如下例
ods select extremeobs;
title "Extreme Values of RBC";
proc Univariate data=learn.blood;
id Subject;
var RBC;
run;
得到输出如下
Extreme Values of RBC
The UNIVARIATE Procedure
Variable: RBC
Extreme Observations
---------Lowest--------- ---------Highest--------
Value Subject Obs Value Subject Obs
1.71 525 525 7.99 565 565
2.33 440 440 8.12 984 984
2.55 113 113 8.26 288 288
2.92 293 293 8.43 726 726
3.13 635 635 8.75 135 135
3.将输出导出到SAS数据集
一般过程都有OUT=选项。然而使用ODS可以选择你想要要的任何值。假设你使用t-test,这个统计过程会产生t-值和p-值。然而从PROC TTEST中产生的数据集中并不能得到这两个值。使用ODS,将t-test的输出导出到一个结果集。
ods listing close;
ods output ttests=t_test_data;
proc ttest data=learn.blood;
class Gender;
var RBC WBC Chol;
run;
ods listing;
title "Listing of T_TEST_DATA";
proc print data=t_test_data;
run;
注:在过程中不能加入NOPRINT选项。不然,ODS不能得到结果。
导出到数据集后,可以进行更进一步的分析。