ラベル ステートメント: LABEL の投稿を表示しています。 すべての投稿を表示
ラベル ステートメント: LABEL の投稿を表示しています。 すべての投稿を表示

2017年4月24日月曜日

プロシジャで変数ラベルに改行を入れる方法



プロシジャ毎に方法が異なるので、それぞれ例をあげていきます。


PROC SQL の場合

以下で使用方法や注意点などを紹介済です。
・PROC SQLでの変数ラベルの挙動

proc sql;
 select AGE "#ねん#れい"
 from SASHELP.CLASS;
quit;




PROC PRINT の場合

SPLIT=オプションでラベルの改行文字を設定できます。
以下の例では「#」を改行文字に設定していますが、適当な半角の英数・記号を設定可。

proc print data=SASHELP.CLASS noobs label split="#";
 var AGE;
 label AGE="ねん#れい";
run;


ちなみに「SUMLABEL=」や「GRANDTOTAL_LABEL=」で設定したラベルの場合は改行じゃなくてスペースが挿入されます。



PROC REPORT の場合

SPLIT=オプションが使えます。挙動はPROC PRINTのとは少し異なります。
以下で使用方法を紹介済です。

proc report data=SASHELP.CLASS nowd split="#";
 column AGE;
 define AGE / display "ねん#れい";
run;



別の方法も以下で紹介しています。



その他のプロシジャの場合

ODS LISTING以外の、一部の出力先(ODS HTML, RTFとか)では、インラインフォーマットというものを使って改行できます。
こちらも以下で使用方法や注意点などを紹介済です。
・ODS出力時に文字の書式設定をする【インラインフォーマット】

proc freq data=SASHELP.CLASS;
 tables AGE;
 label AGE="ねん(*ESC*){newline 1}れい";
run;



2014年6月17日火曜日

変数のINFORMAT, FORMAT, LABELを消す方法。




よく質問を受けるのでまとめたいと思います。

*** サンプルデータ ;
data DT1;
attrib
  A label="ラベル1"  informat=8.   format=8.
  B label="ラベル2"  informat=$10. format=$10.
  C label="ラベル3"  informat=8.   format=8.
;
run;

proc contents data=DT1; run;



CONTENTSプロシジャで変数定義情報を見てみると、余計なINFORMAT(入力形式)やFORMAT(出力形式)などが付いてることがあります。これらを消す方法を紹介したいと思います。

data DT2;
   set DT1;

   *** 変数AのINFORMATを消す ;
   informat  A ;

   *** 変数AのFORMATを消す ;
   format  A ;

   *** 変数Aのラベルを消す ;
   label  A= ;
run;

INFORMATとFORMATを消す処理はSETの後に書かないと機能しません。



全変数まとめて処理したい場合は_ALL_が使えます。

data DT2;
   set DT1;

   *** 全変数のINFORMATを消す ;
   informat  _ALL_  ;

   *** 全変数のFORMATを消す ;
   format     _ALL_ ;

   *** 全変数のラベルを消す ;
   attrib      _ALL_  label=" " ;
run;

_ALL_でラベルを消したいときだけATTRIBを使わないと動きません。



データセットを直接更新したい場合は、DATASETSプロシジャで以下のように書いてもいけます。

proc datasets lib=WORK nolist;
  modify DT1;
  attrib _all_ label=" ";
  attrib _all_ format=;
  attrib _all_ informat=;
quit;


データセットに直接処理するので、容量のでかいデータセットの場合はこちらの方が処理時間は早いと思います。



イコールがいる場合といらない場合があったりと、微妙に書き方の統一がとれてないので、どう書くんだっけ?となってしまいます。。
SASのバージョンアップにともなってこの辺の仕様統一もしてほしいなぁ。