2

我正在尝试将一些数据集打印到 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;

谢谢

捷通

4

2 回答 2

1

我认为您可能需要使用ODS LAYOUT来完成此操作。如果您有 SAS 9.4,您可能还考虑学习PROC ODSTABLE或其他PROC DOCUMENT相关过程之一(有关更多详细信息,请参阅此文档页面)。该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 输出会缩放输出以适应空间。

更多信息可以在 SAS® 中的报告中找到!?:ODS PDF 目标的力量

于 2013-12-19T15:11:05.580 回答
1

使用columns=N选项 inODS将一页分成 N 列。尝试操纵列数以适合您的数据集。然后使用startpage=noandstartpage=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陈述将在一页上。

于 2013-12-19T04:56:38.210 回答