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

徒然なるままにSAS暮らし

0215

XMLファイルの入出力  

SASによるXMLファイルの入出力方法を紹介します。
といっても使用する機能はlibnameやODSといった
単純なものです。xmlといえば、製薬業界ではCDISCの
Define.xmlを思い浮かべますが、最近SASデータセット
をxmlファイルに変換して提出する方向にFDAやCDISCが
動いているので後々この辺りの機能が注目を集めるかも
しれません。

libnameの出力方法:
libname ライブラリ名 xml "xmlファイルのパス" オプション ;

odsの出力方法:
ods xml file="xmlファイルのパス" オプション ;

以下のようにいくつかのファイルを作ってみます(⑤は読み込み)。
①データの値をそのまま各要素の値として出力
②データの値を属性として出力
③CDISC ODM形式(つまりDefine.xml)で出力(CDISCのデータじゃないのでログにエラーが出ます)
④ODSでprintプロシジャの結果を出力
⑤①で作成したxmlファイルの読み込み

おもしろいのは、③の方法でDefine.xmlもどきが作成できるのですが、
コードリストの出力はformatactive=yesで変数のフォーマットを
出力してくれます。CDISCに馴染みがない方やこれから勉強される方は
「Define.xmlって何ぞや?」という話になるかと思いますが、別の機会に
紹介できればと思います。要はデータの内容を所定のXML形式で米国の
FDAや日本のPMDA等の規制当局に提出が必要な代物です。ただ、ODMの
バージョンが古そうなので開発は置き去りなのかなとも感じております。


*** テストデータの作成 ;
proc format ;
value XF 1 = "A" 2 = "B" 3 = "C" ;
run ;
data _TEST ;
do ID = 1 to 5 ;
X=rantbl(100,0.5,0.25,0.25) ;
output ;
end ;
format X XF. ;
run ;
*** ①libname xmlエンジン(拡張子はxmlでファイル名とデータセット名は別) ;
libname _XMLOUT xml "./TEST.xml" xmldataform=element xmltype=generic ; *--- 設定はデフォルト ;
*** データ出力 ;
data _XMLOUT._XMLTEST ;
set _TEST ;
run ;
*** ②xmldataform=attribute: 属性としてデータを出力 ;
libname _XMLOUT2 xml "./TEST2.xml" xmldataform=attribute xmltype=generic ;
data _XMLOUT2._XMLTEST ;
set _TEST ;
run ;
*** ③CDISC ODM形式でも出力可能(formatactive=yesでコードリスト作成) ;
libname _XMLOUT3 xml "./TEST3.xml" xmltype=cdiscodm formatactive=yes ;
data _XMLOUT3.DM ;
set _TEST ;
run ;
*** ④ODS XMLでアウトプットをXMLファイルに出力 ;
*----- 注意 : ODSで吐き出したXMLファイルは普通には読み込めない ;
ods listing close ;
ods xml file="./_ODSXML.xml" ;
proc print data=_TEST ;
run ;
ods xml close ;
ods listing ;
*** ⑤XMLファイルの読み込み ;
*--- データ読み込み(xmltypeがgeneric(well-formed,つまり整形式)のものはそのまま読み込める) ;
data WK_XMLIN ;
set _XMLOUT._XMLTEST ;
run ;


順に結果を見てみましょう。SASのデータは容量が大きいので、
テキストであるXMLでデータを保存しておく場合等に有効かと
思います。

テストデータ
xml_テストデータ
①の結果
test_xml_1.png
②の結果
test_xml_2.png
③の結果(下のほうにCodelist関連のタグも出力されています)
test_xml_3.png
④の結果
ods_xml.png
⑤の結果
xml_テストデータ_in



スポンサーサイト

Posted on 2014/02/15 Sat. 12:25 [edit]

CM: 2
TB: 0

プロフィール

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

訪れた人

▲Page top