欠損値をもつ変数の個数について

[OS] ALL
[リリース] ALL
[キーワード] Base, DATA, week of the month, INTNX

[質問]

各オブザベーションに対して、欠損値をもつ変数の数をカウントしたいのですが、どのようにしたらよいですか。

[回答]

カウントする変数が数値変数の場合、NMISS関数が利用できます。
文字変数に対する同等の関数はありませんが、たとえば以下のようにして配列とMISSING関数を用いることに より、同等の処理を行なうことが可能です。

                                                  /* サンプルデータ */
  DATA TEST;
    INPUT c1 $ c2 $ c3 $ n1 n2 n3;
    CARDS;
    A B C 0 1 0
    A . . 1 . .
    . B C . 1 0
    . . . . . .
    ;
  RUN;

  DATA TEST2;
    SET TEST;
    n_cnt=NMISS(of n1-n3);                  /* 数値変数の欠損値の数 */
                                            /* 文字変数の欠損値の数 */
    ARRAY test(*) _CHARACTER_;     /* すべての文字変数を配列に入れる */
    c_cnt=0;
                            /* 欠損値を見つけるごとにcntをひとつ足す */
    DO i=1 TO DIM(test);
    IF MISSING(test(i)) > 0 THEN c_cnt+1;
    END;
  RUN;

NMISS関数 欠損値の数を返す(数値変数のみ)
MISSING関数 欠損値かどうかをチェックして、欠損値であれば1を、そうでなければ0を返す