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

徒然なるままにSAS暮らし

0818

ODS出力時の罫線のカスタマイズ  

先日RWIの記事で、RWIの罫線カスタマイズが優れている話をしましたが、reportプロシジャでも頑張れば多様な罫線カスタマイズが可能という話です。もちろんreportプロシジャに限らず、tabulateプロシジャやtemplateプロシジャとの組み合わせでも様々なカスタマイズが可能です。ODS出力時のレポートのカスタマイズ全般については統計解析ソフト「SAS」でも解説しておりますので、ご興味ある方は是非ご一読ください。

テストデータの作成も前回同様、臨床試験で得られた継時的な体重の変化量を想定します。
・テストデータ作成と要約統計量算出
*** Format作成 ;
proc format ;
value GRPF 1 = "Placebo" 2 = "Active" ;
value VISITF 1 = "Week 2" 2 = "Week 4" 3 = "Week 6" ;
run ;

*** テストデータ作成 ;
data TEST ;
do I = 1 to 50 ;
do VISIT = 1 to 3 ;
do GRP = 1 to 2 ;
CHG = -1*VISIT + -0.5*VISIT*GRP + rand("normal") ;
output ;
end ;
end ;
end ;
format GRP GRPF. VISIT VISITF. ;
run ;

*** 要約統計量の算出 ;
proc summary data=TEST n mean stddev nway ;
class VISIT GRP ;
var CHG ;
output out=_OUT(drop=_FREQ_ _TYPE_) n=n mean=mean stddev=sd ;
run ;


・罫線カスタマイズ部分
罫線をカスタマイズしたい箇所に「borderbottomcolor=green borderbottomwidth=0.5」などと指定して、下線の色や太さをカスタマイズしております。対応関係を掴むために下記プログラムと出力結果の罫線の色を対応させております。header部分のwhite(プログラムの黒の太字部分)については、出力結果で罫線があたかも存在しないように見せるための指定です。
ods escapechar="\" ;
ods listing close ;
ods pdf ;
ods rtf ;
title ;

*** reportプロシジャ ;
proc report data=_OUT nowd
style(report)={rules=none frame=void}
style(header)={just=l borderbottomcolor=pink borderbottomwidth=1} ;
columns ("\S={just=l borderbottomcolor=green borderbottomwidth=0.5} report procedure"
("\S={borderbottomcolor=white borderbottomwidth=0.5}" VISIT GRP)
("\S={just=c borderbottomcolor=green borderbottomwidth=0.5} Summary Statistics" N MEAN SD)
)
DEF ;
define VISIT / order "Visit" style={width=80pt just=l} format=VISITF. ;
define GRP / display "Treatment" style={width=80pt just=l} format=GRPF. ;
define N / display "N" style={width=60pt just=r} format=best. ;
define MEAN / display "Mean" style={width=60pt just=r} format=8.1 ;
define SD / display "SD" style={width=60pt just=r} format=8.2 ;
define DEF / noprint computed ; *--- ダミー(罫線出力用) ;

compute DEF ;
if GRP =2 then do ;
call define(_ROW_,'style',"style={borderbottomcolor=purple borderbottomwidth=0.5}") ;
end ;
else if GRP =1 then do ;
call define('_C2_','style',"style={borderbottomcolor=blue borderbottomwidth=0.5}") ;
call define('_C3_','style',"style={borderbottomcolor=blue borderbottomwidth=0.5}") ;
call define('_C4_','style',"style={borderbottomcolor=blue borderbottomwidth=0.5}") ;
call define('_C5_','style',"style={borderbottomcolor=blue borderbottomwidth=0.5}") ;
end ;
endcomp ;
run ;

ods rtf close ;
ods pdf close ;
ods listing ;

出力結果は以下になります。一昔前は要件を完全に満たすことを諦めたり、膨大な時間を費やしてマニュアルを漁ったりしてましたが、罫線のカスタマイズはどんどん進化していて、この先もどんな新しい機能が出てくるか楽しみです。症例一覧表のカスタマイズなんかも今ゼロから書いてみると全く違うプログラムで綺麗なレポートが出力できたりするんでしょうね。。

・PDF出力
罫線_01

・RTF出力
罫線_02

スポンサーサイト

Posted on 2015/08/18 Tue. 00:11 [edit]

CM: 0
TB: 0

プロフィール

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

訪れた人

▲Page top