我正在尝试将一些数据集打印到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
答案 0 :(得分:1)
使用columns=N
中的ODS
选项将页面划分为N列。尝试操纵列数以适合您的数据集。然后使用startpage=no
和startpage=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中找到。