1

我有一个大型 SAS 数据集,我想使用按值处理制作一系列表格和图表。我将这些输出到 PDF。

有没有办法让 SAS 在遍历数据时在表格和图表之间交替?现在,我必须先打印所有表格,然后再打印图表。如果只是 4 个表格/图表,那么我可以写

这是一个简单的例子:

data sample;
  input byval $ item $ amount;
  datalines;
A X 15
A Y 16
A Z 12
B X 25
B Y 10
B Z 18
;
run;

symbol1 i=j;

proc print data=sample;
  by byval;
  var item amount;
run;

proc gplot uniform data=sample;
  by byval;
  plot amount*item;
run;

这将打印 2 个表格,然后是 2 个图表。我希望“A”的图表出现在“A”的表格之后,以便读者可以翻阅 pdf 并始终一起看到相关的图表和表格。

我可以为每一个编写单独的过程,但是 gplot 不会有一个统一的轴(如果我有 100 个不同的组而不是 2 个,它会变得混乱)。

我考虑过将它们注入 greplay,但是你不能使用带有“#BYVAL1”的标题。

有什么简单的方法可以做到这一点?

4

2 回答 2

2

我从未使用过它,但可能值得查看 ODS 文档。这允许您存储所有过程的输出,然后使用 PROC DOCUMENT 从它们中引用特定项目。

以下是 SAS 网站的链接,其中包含有关这方面的有用信息,特别是 Cynthia Zender 为 2009 年 SAS 全球论坛撰写的论文。

http://support.sas.com/rnd/base/ods/odsdocument/index.html

Cynthia 还定期为 SAS 支持社区网站 ( https://communities.sas.com/community/support-communities ) 做出贡献,因此如果您仍然卡住,可能值得在那里询问。

祝你好运

于 2013-01-30T09:06:44.477 回答
0

我不知道有什么方法可以直接做你问的事情。GREPLAY 可能是您最接近的;主要问题是 SAS 线性处理 PROC,首先处理整个 PROC PRINT,然后处理整个 PROC GPLOT。GREPLAY 将允许您重新显示输出,但如果由于#BYVAL 问题而无法满足您的需求,我不确定是否有更好的解决方案。也许您可以在之后修改标题(不确定 GREPLAY 是否允许这样做)?

您可以尝试使用 ODS LAYOUT,但我认为这不会更好。可能更好的一种方法是,如果您可以计算出在“页面”上有两列,一列是 PROC PRINT 输出,一列是 PROC GPLOT,然后将列打印一页而不是另一页。我认为这是不可能的,但可能值得探索。

您也可以尝试设置一个宏来分别执行每个 BYVAL,手动以统一的方式定义轴(即,根据您自己对正确轴参数的计算来定义它,作为宏的参数)。这可能是仍然允许#BYVAL 正常工作的最简单的解决方案。

您也可以尝试浏览 Richard DeVenezia 的网站 ( http://www.devenezia.com/downloads/sas/samples/ ),其中有很多 SAS/GRAPH 解决方案的示例。他有时也会在 SAS-L (sasl@listserv.uga.edu) 上发帖,不确定我是否在 StackOverflow 上见过他。他可能是最有可能回答我所知道的问题的人。

于 2013-01-30T05:43:46.240 回答