4.7K Views
March 26, 24
スライド概要
[第9回大阪SAS勉強会] 筒井 杏奈
SAS言語を中心として,解析業務担当者・プログラマなのコミュニティを活性化したいです
RTF出力を活用した解析報告書の作成 2024年3月22日(金) 第9回大阪SAS勉強会 東邦大学医学部 社会医学講座医療統計学分野 筒井杏奈
本日の内容 ※ 本資料での解析報告書は、複数の解析図表を一つにまとめた文書を指す 目次 • 背景・目的・本手法の利点 • 方法 (1) 個々の解析帳票の作り方 • 方法 (2) 帳票結合ツールの作り方 • 方法 (3) 目次の作り方 • まとめ 1 of 25
背景 ① 表紙、目次 解析報告書作成の一般的な流れ: (1) 図表毎に解析帳票ファイル出力 (2) 一ファイルに結合 (3) 表紙や目次など追加(主に手直し) 統計解析業務では、解析計画や仕様変更ならびにプログラム修正などが頻発 ⇒ 再出力による結合や手直しなど、再作業が繰り替えされやすい ⇒ 追加リソース発生による業務逼迫や解析スケジュールの遅れのリスク リソースが限られた組織にとって 解析報告書の作成にかかる省力化・効率化は喫緊の課題 2 of 25
背景 ② SASによる解析報告書の作成については、複数の企業から アイデアが報告され、各企業で方法が確立していると考えられる • 田村洋介 (2005) 解析結果作成の自動化について - 解析結果のWordファイ ルのSASによる自動生成 -. • 田村洋介 (2006) SAS-Microsoft Word間の自動化処理による出力の加工・ 整形. • 吉崎正浩ら (2009) %RTFマクロを用いた解析結果の効率的作成に向けた取り 組み~医薬品開発における解析業務の標準化~ • 今野聡ら (2011) ODS RTFとREPORTプロシジャを用いた一覧表の出力 しかし全てのコードを公開した発表は見られない 3 of 25 ※資料の詳細は参考文献参照(スライド25枚目)
目的 アカデミアにおいても解析報告書の作成のためのSASプログラムは必要 – 臨床研究支援センターでの臨床研究統計解析の受託業務 – 研究者自身が行う複数の統計解析 以前に個人的にアカデミアでSASによる WORD形式の解析報告書(に似たもの)の作成依頼を受けた ⇒ その時に作成したSASプログラムは現在も活用 【本日の内容】 手順説明と共にSASプログラムを公開し、情報共有したい 4 of 25
本手法の利点 Excel (DDE)との比較 • RTF出力により 必要なタスク削減 • Wordの機能により 目次作成の自動化 • Word出力 (ods word) は Preproduction版で日本語 の文字化けが生じるため RTF出力(ods rtf) を代用 • RTF出力時、 TEMPLATE で体裁統一の上、タイト ルに見出しスタイル設定 Excel VBA? VBAツールで 自動結合 RTF; Rich Text Format。文字や 画像を組み合わせた文書を保存す るためのファイル形式の一つ。 Wordの目次機能で 自動作成 5 of 25 ※詳細な検討は今野聡ら (2011) 参照
方法 (1) 個々の解析帳票 の作り方 ① ② 環境設定 RTF出力プログラム 6 of 25
作成見本:表 右上にページ番号と実行日時 タイトルに見出し2の スタイル設定 (次スライド) 表 脚注 7 of 25
(参考)タイトルに見出し2のスタイル設定? タイトルを選択してスタイルを参照 ⇒ 「見出し2」設定済みと確認される 8 of 25
作成見本:図 9 of 25
① 環境設定 - オプション 共通の環境設定ファイルに下記コードを貼り付けて適宜修正(Init.sasなど) 印刷の向き:横 (landscape)または縦 (portrait) ※横がおすすめ option orientation=landscape nocenter 表の位置:左 (nocenter) または中央 (center) number ページ番号を付与 topmargin=2cm bottommargin=2cm leftmargin=2.5cm rightmargin=2.5cm ; proc template ; <次のページ参照> ; run ; 10 of 25 ページ余白
① 環境設定 - RTF出力時のスタイル設定 TEMPLATEプロシジャでRTF出力時の フォントやフォントサイズなどの見た目を設定 プログラム例は多数のWeb公開あり →「SAS RTF template」等の検索で見つかる資料が参考になる 例 • Chen HL, et. al (2020) Making Customized ICH Listings with ODS RTF HueiLing Chen, PharmaSUG 2020, https://www.pharmasug.org/proceedings/2020/DV/PharmaSUG-2020-DV-135.pdf • Haworth L (2005) SAS® with Style: Creating your own ODS Style Template for PDF Output, SUGI30, https://support.sas.com/resources/papers/proceedings/proceedings/sugi30/132-30.pdf • Suzanne M (2006) How To Produce Almost Perfect RTF Output, NESUG 2006, https://www.lexjansen.com/nesug/nesug06/io/io12.pdf 11 of 25
① 環境設定 - スタイル設定例
スタイル名は変更可。
RTF出力時に参照
日本語フォントの設定は反映されるが
英語フォントは反映されない?
proc template;
define style user.mystyle ;
parent = styles.rtf;
replace fonts /
'TitleFont2' = ("Times New Roman, 游明朝",11pt)
'TitleFont' = ("Times New Roman, 游明朝",11pt, bold)
'StrongFont' = ("Times New Roman, 游明朝",8pt)
'EmphasisFont' = ("Times New Roman, 游明朝",8pt)
'FixedEmphasisFont' = ("Times New Roman,游明朝",8pt)
'FixedStrongFont' = ("Times New Roman,游明朝",8pt)
'FixedHeadingFont' = ("Times New Roman,游明朝",8pt)
'BatchFixedFont' = ("Times New Roman, 游明朝",8pt)
'FixedFont' = ("Times New Roman,游明朝",8pt)
'headingEmphasisFont' = ("Times New Roman, 游明朝",8pt, bold)
'headingFont' = ("Times New Roman, 游明朝",11pt, bold)
'docFont' = ("Times New Roman, 游明朝",11pt);
replace color_list “Colors used in the default style” / ‘bg’ = _undef_ ‘fg’ = black ‘bgH’ = _undef_ 'link' = blue;
replace table from Output / borderwidth = 0.5pt borderspacing = 0pt cellpadding = .5pt rules = all frame = box;
replace Body from Document “Controls the Body file.” / textalign=left marginbottom = 0.5in margintop = 1in
marginright = 0.5in marginleft = 0.5in;
replace pageno from pageno / fontsize = 9 pt pretext=“ ”
posttext=" (*esc*)S={font_size=6pt}%sysfunc(DATETIME(), e8601dt.)";
class SystemFooter / font = ("Times New Roman",9pt);
end ;
run ;
12 of 25
Pagenoのpretextやposttextの設定により
目次番号の前後に
プログラム実行日時などを自動挿入
※このプログラムでは表示位置が
常に右上になるバグあり(未解決)
② RTF出力プログラム - 表の場合
ODSTEXTでRTFの出力時に
%let _title=表1 性別の学生数 ;
「¥s1」と書けば
ods rtf file="../Output/01.rtf" style=user.mystyle
「見出し1」を設定するよう定義
bodytitle startpage=no nogtitle
wordstyle="{¥s1 Heading 1 ¥s2 Heading 2 ¥s3 Heading 3;}" ;
実際に指定(本例では見出し2)
※「;} 」は正しい
proc odstext ;
p "{¥pard¥s2 &_title. ¥par}"/ style={fontsize=12pt fontweight=bold} ;
run;
footnote1 "脚注1" ;
‘docFont’(表セルの値)と
proc report data=xx
異なるフォント設定を指定
nowd split="@" style(column)={asis=on} headline ;
<<省略>> ;
run ;
ods rtf close;
13 of 25
図: フォルダ構成例
② RTF出力プログラム - 図の場合
図: フォルダ
構成例
/* 図のデータをサブフォルダに出力 */
ods graphics on/reset=index antialiasmax=1000 height=10cm width=16cm
imagefmt=png noborder imagename="plot_2_1_" ;
ods listing gpath=“../Output/Figure” dpi=300 ;
proc sgplot .. (略) ; run ;
plot_2_1_1.pngが出力される
ods listing close;
/* サブフォルダにある図のデータを読み込み、RTFを出力 */
%let _title=図2.1 〇〇 ;
%let _footnote=脚注1 ;
Preimageにて
ods rtf file= …(表と同じため略) ;
読み込む画像を指定
proc odstext ; = …(表と同じため略) ;
タイトル出力
ods text=“(*esc*)S={preimage=”../Output/Figure/plot_2_1_1.png“}” ; 図出力
ods text="(*esc*){newline 1}{¥pard &_footnote. ¥par}";
脚注出力
ods rtf close ;
14 of 25
脚注はODS TEXTにて出力
② (参考)図の出力例 Footnoteステートメントによる出力では 図と脚注の位置が反対になる ods rtf file= (略) ; footnote "脚注1" ; proc odstext ; (略) ; ods text='(*esc*)S={preimage= "../Output/Figure/plot_2_1_1.png"}'; ods rtf close ; 15 of 25
方法 (2) 帳票結合ツール の作り方 16 of 25
RTF自動結合ツール SAS One Dash (2017.11.29) 「複数のRTFファイルを自動結合するツールをSASで開発する」 https://sasonediver.blog.fc2.com/blog-entry-56.html ⇒ プログラムを2行目だけパス記入し他はそのままSASで実行すればツール作成 任意のRTFを ツールにドラッグ × ダブルクリック 17 of 25 ファイル名順に RTFを自動結合
方法 (3) 目次の作り方 ① 表紙ファイル ② 作成手順 ③ RTF全結合ファイル 18 of 25
① 表紙ファイル(続く) 表紙ファイルを 手作業で作成 拡大図は次ページ 名前の順で 最初となるファイル名を付与 19 of 25
① 表紙ファイル(続き) 任意の表紙と、目次フィールドを挿入 • 試験名、日付、作成者、承認者など必要に応じ追加可能 • 複数ページもOK 目次フィールド 「参考資料」>「目次」より挿入 ※「目次項目が見つかりません」と表示されるが、 目次項目は後のプロセスで作るため問題ない 20 of 25 任意の表紙など この例では簡易的に一行のみ
② 作成手順 解析図表 01.01.rtf, 01.02.rtf など SASでRTF出力時に ・TEMPLATEで体裁統一 ・各タイトルに 見出しスタイルを設定 VBAツールで結合 表紙ファイル 00.rtf など 目次フィールド 21 of 25 表紙 Wordで開き、名前を付けて .docx等の形式で保存 余分な改行など調整 目次フィールド 更新して目次を自動生成
③ RTF全結合ファイル (続く) • 名前を付けて.docx等の形式で保存 (RTF形式のまま編集すると保存後にファイルサイズが増加するため) • 改行の削除等、体裁を手作業で調整 削除 削除 22 of 25
③ RTF全結合ファイル (続き) 「目次項目が…」で 右クリック「フィールド更新」選択 各解析図表ファイルで定義された 見出しスタイルの図表タイトルを 元に目次が自動生成 解析報告書の完成 23 of 25
まとめ RTF解析帳票出力~ファイル結合~解析報告書作成までの 一連のプロセスをほぼ自動化し、プログラムを全て共有した ただしプログラムは改善の余地があることに留意が必要である ⇒ 本手法は省力化・効率化と、手作業の削減による品質向上が期待される ⇒アカデミアでは企業ほど組織標準の図表の書式が厳密に定まっておらず より柔軟に書式が設定可能なため有用と考えられる 24 of 25
参考文献 • 田村洋介 (2005) 解析結果作成の自動化について - 解析結果のWordファイル のSASによる自動生成 -.関西SASユーザー会. https://www.sas.com/offices/asiapacific/japan/usergroups/wg/archive/index. html • 田村洋介 (2006) SAS-Microsoft Word間の自動化処理による出力の加工・整 形. SAS Forum ユーザー会 学術総会 2006. https://www.sas.com/offices/asiapacific/japan/usergroups/technical06/appe ndix.html • 吉崎正浩ら (2009) %RTFマクロを用いた解析結果の効率的作成に向けた取り 組み~医薬品開発における解析業務の標準化~、SASユーザー総会2009. https://www.sas.com/ja_jp/events/13/users-group-2009/program.html#day2 • 今野聡ら (2011) ODS RTFとREPORTプロシジャを用いた一覧表の出力 SAS ユーザー総会2011. https://www.sas.com/ja_jp/events/13/users-group-2011/program.html#day3 25 of 25
連絡先: [email protected]