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

徒然なるままにSAS暮らし

0206

IMLのsubmitステートメントによる行列のマクロ変数への受け渡し  

IMLプロシジャのsubmitステートメントで行列をDATA/PROCステップに
受け渡すことができます。下記では、ベクトルAと3x3単位行列Xをマクロ
変数としてDATAステップでそれぞれ変数B、Yに代入しています。行列の
場合は、行がそのまま続けてスペース区切りで格納されます。ただ、気に
なるのが、endsubmitとセミコロンの間にスペースを入れると動きません。
バグか仕様か・・・。

proc iml ;
A = do(1,5,2) ; *--- ベクトル ;
X = I(3) ; *--- 3x3単位行列 ;
print A X ;
submit A X ; *--- Xをマクロ変数として引き渡す(*だと全行列が対象) ;
data Y ;
B = "&A" ; *--- ベクトルの格納 ;
Y = "&X" ; *--- 行列のままXを文字変数に格納 ;
run ;
proc print data=Y ; run ;
endsubmit; *** セミコロンの前にスペースなし!! ;
quit ;

結果は以下になります。簡単にDATA/PROCステップとやり取りができると便利ですね。
・ベクトルAと行列X
IML_S1.png
・データセットYの変数Bと変数Y
IML_S2.png
スポンサーサイト

Posted on 2014/02/06 Thu. 00:28 [edit]

CM: 0
TB: 0

プロフィール

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

訪れた人

▲Page top