多くの集計用プロシジャでは、分類変数が欠損値のオブザベーションを集計から除きます。
変数Aには欠損値が含まれてます。
proc freq での例
変数Aの欠損値2オブザベーションが集計から除かれています。
欠損値も含め集計したい場合、missingオプションをつけます。
同様に proc means や proc summary でもclass変数が欠損値のオブザベーションは集計から除かれます。
missingオプションをつけるとclass変数が欠損値のものも含め集計されます。
proc means data=DT1;
class A / missing; var C; run; |
proc tabulateも同様。
proc tabulate data=DT1;
class A / missing; table A; run; |
まずは、proc freq の「なんじゃそりゃ」という落とし穴(proc means や proc tabulateでは問題なさそう)
変数Aに欠損値と1をまとめた "Missing and One" というフォーマットを設定して集計しています。
落とし穴②
既にSASYAMAさんが記事にされているので、そちらをご覧ください。
means summaryプロシジャのclassステートメント指定変数の欠損値には気を付けてって話
classステートメントに変数を複数指定する場合は注意という話です。
class変数のいずれかに欠損値が含まれている場合、missingオプションがないとそのオブザベーションが全ての集計から除かれてしまいます。
落とし穴③
これも上のSASYAMAさんの記事で注意喚起されていますが、
出力データセットの方は、結果ビューアにない組み合わせも出力されています。
以下の例をご覧ください。
変数Aに欠損値と1をまとめた "Missing and One" というフォーマットを設定して集計しています。
missingオプションを設定していないので、欠損値は集計から除かれますが、なんと、、A=1も欠損値の扱いになって集計から除かれています。
フォーマットで欠損値と非欠損値を1つのカテゴリにまとめた場合、
実データに欠損値が存在すると、同じカテゴリの非欠損値のデータも巻き込んで、欠損値の扱いにしてしまうようです。
既にSASYAMAさんが記事にされているので、そちらをご覧ください。
means summaryプロシジャのclassステートメント指定変数の欠損値には気を付けてって話
classステートメントに変数を複数指定する場合は注意という話です。
class変数のいずれかに欠損値が含まれている場合、missingオプションがないとそのオブザベーションが全ての集計から除かれてしまいます。
これも上のSASYAMAさんの記事で注意喚起されていますが、
proc means や proc summary の outputステートメントで集計結果をデータセットに出力すると、
出力データセットの方は、結果ビューアにない組み合わせも出力されています。
例えば、出力データセットの1行目は変数AとBの分類全体に対する集計結果です(ただしmissingオプションがない場合、変数AかBが欠損値のオブザベーションは除いたうえで集計される)
特にmissingオプションを設定していると、どの組み合わせに対する集計なのか、分かりづらいです(例:1行目と3行目)
変数_TYPE_で上記の違いを区別することが出来るものの、「紛らわしいので要らない!」というケースがほとんどなので、、
nwayオプションで結果ビューアと同じ組み合わせの数に減らせます。
0 件のコメント:
コメントを投稿