sas ods列 - 制作“期刊样式”文档

时间:2013-12-19 03:04:03

标签: sas sas-ods

我正在尝试将一些数据集打印到PDF。任何人都可以告诉我如何将最后4个proc print语句放入单个页面上的2 x 2,同时将第一个语句留在自己的页面上(现在就是这样)?

title;

options nodate nonumber nocenter orientation=portrait spool;

ods pdf file="I:\ASR\201410\bio.pdf" color=yes style=fancyprinter;

ods pdf startpage=NEVER;

ods escapechar='';

ods pdf text='S={just=CENTER preimage="I:/asr/logo.png" posttext=""';

ods pdf text= "S={just=c font_weight=bold font_size=12pt font_face=Arial}Fall 2013 - Annual Statistical Report";

ods pdf text= "S={just=c font_weight=bold font_size=12pt font_face=Arial}Department of Biology";

proc print data=IntApps_AY_cnt_p noobs; TITLE "Applications"; run;

ods pdf startpage=now;

proc print data=enroll_cnts_np noobs; TITLE "New Student Enrollment"; run;

ods pdf startpage=now;

proc print data=enroll_cnts_p noobs; TITLE "Total Enrollment"; run;

ods pdf startpage=now;

proc print data=TuitionScholarships_cnt_p noobs; TITLE "Stipends"; run;

ods pdf startpage=now;

proc print data=asr_degs_cnts_p noobs; TITLE "Academic Year 2012-2013 Awarded Degrees"; run;

ods layout end;

ods all close;

由于

JT

2 个答案:

答案 0 :(得分:1)

使用columns=N中的ODS选项将页面划分为N列。尝试操纵列数以适合您的数据集。然后使用startpage=nostartpage=now来帮助您在所需位置输出print语句。

SAS将每个列视为新页面,因此您可以利用它将多个print语句输出放在一个页面上。

使用2列的示例:

options nodate nonumber;
data work.animals;
    input name $ weight;
    datalines;
    monkey 20
    shark 500
    lion 200
    wolf 120
    buffalo 400
    Parrot 10
    Lizard 30
    Human 150
    Whale 1000
    ;
run;

ods pdf file = 'C:\sasdata\animals2.pdf' columns = 2;

ods pdf startpage=no;
proc print data=work.animals; /* This print will be on a seperate page */
    title 'Seperate Paged Animals';
run;
ods pdf startpage=now;
ods pdf text="I want a little paragraph here that explains things about 
columns and startpages for putting this proc print statement on a 
seperate page. The other four statements will be outputed 
onto one page only divided into two columns.";

ods pdf startpage=now;
title;
proc print data=work.animals; /* 2nd print*/
run;

proc print data=work.animals; /*3rd print*/
run;

ods pdf startpage=now;

proc print data=work.animals; /*4th print*/
run;

proc print data=work.animals; /*5th print*/
run;

ods pdf close;
ods listing;

当我们输入startpage=now时,它只会转到新列而不是新页面。因此,第一个print语句和文本段落将位于单独的页面上。最后四个print语句将在一页上。

答案 1 :(得分:1)

我认为您可能需要使用ODS LAYOUT来完成此任务。如果您使用的是SAS 9.4,则可以考虑学习PROC ODSTABLE或其他PROC DOCUMENT相关过程之一(有关详细信息,请参阅this doc page)。 ODS LAYOUT解决方案适用于SAS 9.3+,可能适用于SAS 9.2,但我认为它当时非常生疏。

基本代码类似于

ods pdf file="c:\temp\blah.pdf";
proc print data=sashelp.class;
run;
ods pdf startpage=now;
ods layout start columns=2;
ods region;
proc print data=sashelp.class;
run;
ods region;
proc print data=sashelp.class;
run;
ods region;
proc print data=sashelp.class;
run;
ods region;
proc print data=sashelp.class;
run;
ods layout end;
ods pdf close;

你这样得到2列。你仍然需要通过使事情不要太大来控制行;如果这是一个问题,您可以控制ods region语句(ods region height=4in)上各个区域的高度/宽度,但这可能会也可能不会导致结果出现问题,因为只有一些SAS输出将缩放输出以适应空间。

更多信息可在You Did That Report in SAS®!?: The Power of the ODS PDF Destination中找到。