僕の頁 <SASと臨床試験と雑談と>

徒然なるままにSAS暮らし

----

スポンサーサイト  

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Posted on --/--/-- --. --:-- [edit]

CM: --
TB: --

0223

スタイルテンプレートをまとめて出力  

SASでは、ODSで外部ファイルに出力する際に多くのスタイルテンプレートが
用意されています。約50種類もあるので、私の場合、どれを使用するか、また、
各スタイルテンプレートがどんな見た目なのか毎回確かめつつ使用していました。
ただ、いつも出力して確認する時間が無駄なので、1つのPDFファイルに全スタイル
テンプレートの出力サンプルをまとめておいて使うようにしています。

プログラムの流れは、
①レポート用のテストデータ作成
②辞書テーブルからスタイルテンプレートの名前と数を取得(マクロ変数に格納)
 (dictionary.stylesにスタイルのリストが格納されています)
③取得したスタイルごとにODS PDFでレポート(表とグラフ)を作成
 (レポートはc:\tempに出力されます)
となります。
*** おまじない ;
options papersize=A4 orientation=landscape mprint mlogic nodate nonumber ;
*** テストデータ ;
data TEST ;
do ID = 1 to 100 ;
CITY = rantbl(100, 1/5, 1/5, 1/5, 1/5, 1/5) ;
SALES = round(1000000 + 100000*rannor(101)) ;
GRADE = rantbl(102,1/4,1/4,1/4,1/4) ;
output ;
end ;
run ;
*** スタイル名を格納している辞書テーブルからスタイル名と数をスペース区切りで取得 ;
proc sql noprint ;
select STYLE, count(STYLE) into : _STYLE separated by " ",
: _NN
from dictionary.styles where upcase(style) like 'STYLES%';

quit ;
*** スタイル名と数をログに出力 ;
%put スタイル名: ***** &_STYLE ***** ;
%put スタイル数: ***** &_NN ***** ;
*** 一つの表を全てのスタイルで出力するマクロ ;
%macro _OUT_DEF_STYLE ;
ods listing close ;
ods pdf file="C:\temp\DEF_STYLE.pdf" columns=2 ;
*** スタイルごとに1頁ずつテーブルとグラフを出力 ;
%do I = 1 %to &_NN ;
ods pdf startpage=yes style=%scan(&_STYLE,&I," ") ; *--- 各スタイル名を抽出 ;
title "Style: %substr(%scan(&_STYLE,&I,' '),8)" ;
proc tabulate data=TEST format=yen10. ;
class CITY GRADE ;
var SALES ;
table CITY, GRADE*SALES*(n*f=best. mean) ;
run ;
proc sgplot data=TEST ;
histogram SALES ;
density SALES / type=normal ;
run ;
%end ;
ods pdf close ;
ods listing ;
%mend _OUT_DEF_STYLE ;
*** 実行 ;
%_OUT_DEF_STYLE \;

辞書テーブルは以下のように変数Styleにスタイルテンプレート名を格納しています。
vstyles.png

ログに出力したテンプレート名と数は以下になります。
スペース区切りでスタイル名(51個)が羅列されています。
スタイル名とスタイル数

最後に、出来上がったPDFファイル1ページ目を見てみましょう。
Analysisという名前のスタイルテンプレートです。後ろに残りの
50個が続いて出力されています。
Def_style.png

センスの良いテンプレートがどんどん増えてくれるとカスタマイズする
手間も省けるので期待したいですが最近バージョンが上がってもあまり
追加されていないような気がします。。
スポンサーサイト

Posted on 2014/02/23 Sun. 11:15 [edit]

CM: 2
TB: 0

プロフィール

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

訪れた人

▲Page top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。