また、たとえば独身男性から収集したデータで、配偶者の名前が入る変数があった場合など、そこは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 件のコメント:
コメントを投稿