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 をめくって関連する表と表を常に一緒に表示できるようにしたいと思います。

それぞれに別々の proc を書くこともできますが、その場合、gplot は均一な軸を持ちません (そして、2 つではなく 100 の異なるグループがあると、面倒になります)。

グレプレイに入れようかと思ったのですが、「#BYVAL1」のついたタイトルは使えません。

これを行う簡単な方法はありますか?

4

2 に答える 2

2

私はそれを使ったことはありませんが、ODS DOCUMENT をチェックする価値があるかもしれません。これにより、すべてのプロシージャの出力を保存し、PROC DOCUMENT を使用してそれらから特定のアイテムを参照できます。

以下は、これに関する有用な情報が掲載されている SAS Web サイトへのリンクです。特に、Cynthia Zender による SAS グローバル フォーラム 2009 の論文が参考になります。

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

Cynthia は SAS サポート コミュニティの Web サイト ( 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 を試してみることもできますが、それ以上の効果はないと思います。より良い方法の 1 つは、「ページ」に 2 つの列があり、1 つの列が PROC PRINT 出力で、1 つの列が PROC GPLOT であり、列を他のページよりも 1 ページ印刷できる場合ですこれは可能ではないと思いますが、検討する価値があるかもしれません。

各 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 に答える