特殊欠損値を使ってnullを区別する話。

null、欠損値とは何か?例えば、何かデータを収集していて、そのデータの一部(変数が)が不明であったり、未知であった場合、そこにはnullが入ります。
また、たとえば独身男性から収集したデータで、配偶者の名前が入る変数があった場合など、そこはnullになります(定義不能・適応不能のため)。

ひとえにNullといってもその意味は分けれたりするわけです。
これをSASで表現するのはどうするでしょうか?


data Q1;
ID='001';SEX='F';ANSWER=7;output;
ID='002';SEX='F';ANSWER=11;output;
ID='003';SEX='F';ANSWER=.;output;
ID='004';SEX='M';ANSWER=6;output;
ID='005';SEX='F';ANSWER=4;output;
run;











というデータがあるとします。
これは、ある調査のデータで、質問の対象は女性のみで、解答として
1から10までの数字がANSWERに入るとします。

ここで、

ID 002のように、解答の有効範囲を超えた値をnullに、
そしてID 004のように男性なのに解答してしまった値もnullに変えます。

data A1;
 set Q1;
 if ANSWER>10 then ANSWER=.A;
 if SEX='M'   then ANSWER=.B;
run;











このようにピリオドの後に任意の文字をいれることで
数値型のフィールドに、判別可能な欠損値を格納できます。

見た目上、AやBといった文字が入ってますが、その性質は普段の.と全く同じです。

ですが例えば

proc format;
 value ANSF .A='範囲外解答による欠損'
            .B='定義外解答による欠損'
            .='未回答による欠損';
run;

のように区別してフォーマットが設定できるので

proc freq data=A1;
 tables ANSWER/missing;
 format ANSWER ANSF.;
run;











みたいににして欠損値をカテゴライズできるわです。



0 件のコメント:

コメントを投稿