リストオプションを使用した proc freq で、カウント数がゼロのセルを含めるにはどうすればよいですか? | SAS FAQ

2つの変数のクロス集計で、カウント数がゼロのセルが生成されることは珍しくありません。 このような場合、リストオプション付きの proc freq の出力では、カウントがゼロの変数値の組み合わせが省略されます。たとえば、以下のサンプルデータでは、gender = 2 とeth = 2 のケースはありません。 以下のデータセットには、3つの変数が含まれています。 genderとethの2つの変数は、クロス集計したいカテゴリカル変数です。 3つ目の変数はcountで、これは頻度の重みであり、データセット内でそのパターンを持つケースの数を示します。

data test; input gender eth count;datalines;1 1 121 2 121 3 212 1 22 3 43;run;

リストオプションなしでproc freqを実行した場合、表にはカウントが0のセル(つまり、gender=2 and eth=2)が含まれます。 weightステートメントは、データセット内の各パターンを持つケースの数を決定するために、変数countを使用することを指定します。

proc freq data = test; weight count; table gender*eth;run; The FREQ Procedure Table of gender by ethgender ethFrequencyPercent Row Pct Col Pct 1 2 3 Total 1 12 12 21 45 13.33 13.33 23.33 50.00 26.67 26.67 46.67 85.71 100.00 32.81 2 2 0 43 45 2.22 0.00 47.78 50.00 4.44 0.00 95.56 14.29 0.00 67.19 Total 14 12 64 90 15.56 13.33 71.11 100.00

しかしながら、以下のようにlistオプションを付けてproc freqを実行すると、gender=2とeth=2の組み合わせのカウントがゼロになるため、行のない表が作成されます。

proc freq data = test; weight count; table gender*eth /missprint list;run; Cumulative Cumulativegender eth Frequency Percent Frequency Percent 1 1 12 13.33 12 13.33 1 2 12 13.33 24 26.67 1 3 21 23.33 45 50.00 2 1 2 2.22 47 52.22 2 3 43 47.78 90 100.00

少しの作業で、欠落したセルを含む上記のような表を作成することができます。 最初のステップは、1 に等しい定数の変数を作成することです。

data test; set test; one = 1;run;

次に、odsを使用してproc meansの実行による出力を取得します。 proc meansコマンドでは、nオプションは、n(すなわち、ケースの数)のみを計算することを指定します。 completetypesオプションは,クラス変数(性別と民族)のすべての組み合わせを,データセット内でカウント数が0のものも含めてリストアップすることを指定するもので,そうでなければ省略される. freqオプションは、変数countを、データセットの中で与えられたパターンに従ったケースの数として使用することを指定する(つまり、この例では、freqオプションは、procでweightがproc freqで行ったことをproc meansで行う)。

ods output summary = t;proc means data = test n completetypes; class gender eth; freq count; var one;run; The MEANS Procedure Analysis Variable : onegender eth N Obs N 1 1 12 12 2 12 12 3 21 21 2 1 2 2 2 0 0 3 43 43

これにより、6つの観測値を持つデータセットt(下図)が作成されます。 また、新しいデータセットにはone_Nという変数が含まれており、これはethによる性別の各カテゴリーに該当するケースの数です(必要に応じて0のカウントを含む)。

proc print data=t;run;Obs gender eth NObs one_N 1 1 1 12 12 2 1 2 12 12 3 1 3 21 21 4 2 1 2 2 5 2 2 0 0 6 2 3 43 43

さて、新しいデータセットtに対してproc freqを実行してみましょう。 /zerosオプションは、one_N = 0のケースをリストに含めるようSASに指示しています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です