Summarizeコマンドは、データテーブルの要約統計量を求め、グローバル変数に格納します。Summarizeコマンドは、要約統計量を求めて新しいデータテーブルに表示するSummaryコマンドとは異なります。
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt2 = Open( "$SAMPLE_DATA/Animals.jmp" );
Summarize( dt1,
exg = By( :sex ),
exm = Mean( :Name("身長(インチ)") )
);
Show( exg );
Show( exm );
名前付き引数は、Count、Sum、Mean、Min、Max、StdDev、First、Corr、Quantileで、 これらの統計量は数値列に対してのみ計算できます。このそれぞれがデータ列を引数にとります。
•
|
•
|
Countの場合、列引数は必須ではありませんが、列を指定して非欠測値の数をカウントすると役に立つことがよくあります。
|
•
|
Quantileは、どの分位点かを指定する第2引数もとります(たとえば、10パーセント点なら0.1)。
|
メモ: 除外された行は、Summarizeの計算から除外されます。すべてのデータが除外された場合、Summarizeは欠測値のリストを戻します。すべてのデータが削除された(行がない)場合、Summarizeは空のリストを戻します。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Summarize(
a = By( :年齢 ),
c = Count,
sumHt = Sum( :Name("身長(インチ)") ),
meanHt = Mean( :Name("身長(インチ)") ),
minHt = Min( :Name("身長(インチ)") ),
maxHt = Max( :Name("身長(インチ)") ),
sdHt = Std Dev( :Name("身長(インチ)") ),
q10Ht = Quantile( :Name("身長(インチ)"), .10 )
);
Show( a, c, sumHt, meanHt, minHt, maxHt, sdHt, q10Ht );
スクリプトにByグループが含まれているので、結果は1つのリストと6つの行列になります。
TableBoxを使って結果をフォーマットすることもできます。
New Window( "要約の結果",
Table Box(
String Col Box( "年齢", a ),
Number Col Box( "度数", c ),
Number Col Box( "合計", sumHt ),
Number Col Box( "平均", meanHt ),
Number Col Box( "最小値", minHt ),
Number Col Box( "最大値", maxHt ),
Number Col Box( "標準偏差", sdHt ),
Number Col Box( "10パーセント点", q10Ht )
)
);
図9.2 要約の結果
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Summarize(
a = By( :年齢 ),
c = Count,
sumHt = Sum( :Name("身長(インチ)") ),
meanHt = Mean( :Name("身長(インチ)") ),
minHt = Min( :Name("身長(インチ)") ),
maxHt = Max( :Name("身長(インチ)") ),
sdHt = Std Dev( :Name("身長(インチ)") ),
q10Ht = Quantile( :Name("身長(インチ)"), .10 )
);
Summarize(
tc = Count,
tsumHt = Sum( :Name("身長(インチ)") ),
tmeanHt = Mean( :Name("身長(インチ)") ),
tminHt = Min( :Name("身長(インチ)") ),
tmaxHt = Max( :Name("身長(インチ)") ),
tsdHt = Std Dev( :Name("身長(インチ)") ),
tq10Ht = Quantile( :Name("身長(インチ)"), .10 )
);
Insert Into( a, "全体" );
c = c |/ tc;
sumHt = sumHt |/ tsumHt;
meanHt = meanHt |/ tmeanHt;
minHt = minHt |/ tminHt;
maxHt = maxHt |/ tmaxHt;
sdHt = sdHt |/ tsdHt;
q10Ht = q10Ht |/ tq10Ht;
New Window( "要約の結果",
Table Box(
String Col Box( "年齢", a ),
Number Col Box( "度数", c ),
Number Col Box( "合計", sumHt ),
Number Col Box( "平均", meanHt ),
Number Col Box( "最小値", minHt ),
Number Col Box( "最大値", maxHt ),
Number Col Box( "標準偏差", sdHt ),
Number Col Box( "10パーセント点", q10Ht )
)
);
図9.3 要約と全体の統計量
Byグループを指定しない場合、各統計量の結果は、次のように単一の値になります。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Summarize(
// a = By( :年齢 ),
c = Count,
sumHt = Sum( :Name("身長(インチ)") ),
meanHt = Mean( :Name("身長(インチ)") ),
minHt = Min( :Name("身長(インチ)") ),
maxHt = Max( :Name("身長(インチ)") ),
sdHt = Std Dev( :Name("身長(インチ)") ),
q10Ht = Quantile( :Name("身長(インチ)"), .10 )
);
Show( c, sumHt, meanHt, minHt, maxHt, sdHt, q10Ht );
Summarizeでは、複数のByグループを使用できます。たとえば、「Big Class.jmp」では、次のように指定できます。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Summarize( g = By( :年齢, :性別 ), c = Count() );
Show( g, c );