2016年9月16日金曜日

文字欠損値の表し方 「' '」 vs 「''」



文字欠損値を表す際、
クォーテーションの間に半角スペースを入れるか(' ')、入れないか('')という話。

リファレンスに書かれてるのは前者(' ')ですが、後者('')の書き方しか知らない方も多いです。


以下の例をご覧ください。

data X;
   /* 変数Aに欠損値をセット */
   length A $5.;
   call missing(A);

   /* 文字変数Aが欠損値ならFLG=1 */    
   if A=' ' then FLG=1;
run;

青字の通り、クォーテーションの間に半角スペースを入れていますが、正しく文字欠損値として認識して処理されています。



間に半角スペースを入れるかどうかは基本どちらでもいいんですが、以下の場合は注意が必要です。

data Y;
   label A='aaa';
   A = 1;
run;

上記では変数Aにラベル「aaa」を設定しています。
この変数ラベルを消したいと思い、以下のように書くと、、、

data Z;
   label A='';
   set Y;
run;

「'」というラベルになってしまいます。なんでなのかよく分かりませんが、
ラベルを消したいのであれば、以下の通りクォーテーションの間に半角スペースを入れてあげればうまくいきます。

data Z;
   label A=' ';
   set Y;
run;

他にもこういうケースがあるかもしれないのでご注意下さい。


0 件のコメント:

コメントを投稿