VLABEL関数で変数ラベルを取得することが出来ます。
(変数にラベルが割り当てられていない場合は、変数名が返されます)
VLABEL( 変数名 ) |
* サンプルデータ作成 ;
data DT1; label A="あああ"; do A=1 to 3; output; end; run;
* 変数Aのラベルを取得 ; data DT2; set DT1; length LAB $50.; LAB = vlabel(A); run;
|
実践例
実際質問を頂いてVLABEL関数が活躍した例を紹介します。以下は患者毎に、該当する疾患(A1~A3)に「1」を入れているデータです。
* サンプルデータ作成 ;
data DT1; label NO="患者ID" A1="高血圧" A2="高脂血症" A3="糖尿病"; input NO$ A1 A2 A3; cards; 001 1 . 1 002 . . . 003 . 1 . ; run;
|
このデータから以下のように 「該当する疾患名をカンマで区切って文字化した変数A」 を作りたいとします。
NO (患者ID)
|
A1 (高血圧)
|
A2 (高脂血症)
|
A3 (糖尿病)
|
A
|
---|---|---|---|---|
001 | 1 | . | 1 | 高血圧, 糖尿病 |
002 | . | . | . | |
003 | . | 1 | . | 高脂血症 |
解決案
data DT2;
set DT1; length A $200.; array AR(*) A1 A2 A3; do i=1 to dim(AR); if AR(i)=1 then A=catx(", " , A, vlabel(AR(i)) ); end; run;
|
上記プログラムを理解するうえで参考になりそうな記事
配列(ARRAYステートメント)入門
区切り文字をつけて変数値同士を結合する【CATX関数】
0 件のコメント:
コメントを投稿