TABULATEプロシジャ

Last-modified: 2009-05-19 (火) 19:51:49

TABULATEプロシジャは,SASデータセットからさまざまな記述統計テーブルを作成するプロシジャです.FREQプロシジャが,2,3個の変数の度数分割表を出力するのに対し,TABULATEプロシジャは,より多くの変数を自由に組み合わせ,度数だけでなく平均値をはじめとする多くの基本統計量を使った表をつくることができます.

proc tabulate data=sashelp.class noseps;
  class sex age;
  var height weight;
  table all sex*age, n (height weight)*mean;
run;

/*
-------------------------------------------------------
|              |            |   Height   |   Weight   |
|              |            |------------+------------|
|              |     N      |    Mean    |    Mean    |
|--------------+------------+------------+------------|
|All           |       19.00|       62.34|      100.03|
|Sex    Age    |            |            |            |
|F      11     |        1.00|       51.30|       50.50|
|       12     |        2.00|       58.05|       80.75|
|       13     |        2.00|       60.90|       91.00|
|       14     |        2.00|       63.55|       96.25|
|       15     |        2.00|       64.50|      112.25|
|M      11     |        1.00|       57.50|       85.00|
|       12     |        3.00|       60.37|      103.50|
|       13     |        1.00|       62.50|       84.00|
|       14     |        2.00|       66.25|      107.50|
|       15     |        2.00|       66.75|      122.50|
|       16     |        1.00|       72.00|      150.00|
-------------------------------------------------------
 */

構文

PROC TABULATE <オプション>;
  CLASS 変数 .. </ オプション>;
  VAR 変数 ..</ オプション>;
  TABLE <<頁表現式,> 表側表現式,> 表頭表現式 </ オプション>;

  CLASSLEV 変数 .. / STYLEオプション;
  KEYLABEL キーワード='文字列' ..;
  KEYWORD キーワード.. / STYLEオプション;

 BY 変数 ..;
  FREQ 変数;
  WEIGHT 変数;
  WHERE 条件式;
  LABEL 変数=文字定数 ..;
  FORMAT 変数 .. フォーマット ..;
RUN;

PROC TABULATEステートメント

PROC TABULATE <オプション>..;

PROC TABULATEステートメントオプション

  • DATA=SASデータセット名
  • DATA=SASデータセット名(データセットオプション)
    入力SASデータセット名を指定
  • OUT=SASデータセット名
  • OUT=SASデータセット名(データセットオプション)
    出力SASデータセット名を指定
  • FORMCHAR="罫線用文字列11文字"
    罫線用文字を指定
  • NOSEPS
    横罫線をなくす
  • MISSING
    欠損値を1つのカテゴリとして扱い,除外しない.
  • FORMAT=数値フォーマット名
    表全体の数値のフォーマットを指定
  • CLASSDATA=SASデータセット名
  • CLASSDATA=SASデータセット名(データセットオプション)
    表示したいカテゴリの組み合わせを格納したSASデータセット名(プリロードデータセット)を指定
  • EXCLUSIVE
    プリロードデータセットの組み合わせ以外は表示しない
  • ORDER=DATA | FORMATTED | FREQ | UNFORMATTED
    分類カテゴリの並び順の基準を指定.左から順に,データの値の出現順,フォーマットされた値の昇順,度数の多い順,フォーマットされてない内部値の昇順(デフォルト).
  • VARDEF=DF | N | WDF | WEIGHT
    分散の計算式の分母を指定
  • ALPHA=危険率
    危険率を指定
  • QMARKERS=3以上の奇数
    P2法で分位計算する場合のマーカー数.デフォルトは,MEDIANは7,Q1,Q3は25,P1,P5,..は105.
  • QMETHOD=OS | P2
    分位計算方法を指定.OSは精度が高いが多くのメモリを要する.
  • QNTLDEF=1 | 2 | 3 | 4 | 5
    分位統計量の定義式を指定する.デフォルトは5で,特にP2法で分位計算する場合は,5しか選べない.定義式の詳細は,クォンタイル をみてください.
  • EXCLNPWGTS
    正値でない重みを無視する
  • STYLE=
    ODS出力時のスタイル指定
  • CONTENTS=
  • THREADS | NOTHREADS
    マルチスレッドソートを有効,無効にします.デフォルトは,THREADSシステムオプション(NOTHREADSシステムオプション)です.
  • TRAP | NOTRAP
    浮動小数点演算例外が発生した時,回復処理をする(しない)を指定.デフォルトはNOTRAP(=回復処理をしない).

CLASSステートメント

CLASS 分類変数1 分類変数2 .. </ オプション>..;

表上で分類に使用する変数(分類変数)を宣言する
CLASSステートメントオプション

  • ASCENDING | DESCENDING
    カテゴリを昇順で表示 | 降順で表示
  • PRELOADFMT
    分類変数のフォーマットで定義されているカテゴリ値は該当データがなくともすべて表示する
  • EXCLUSIVE
    分類変数のフォーマットに定義されていない範囲のカテゴリ値を表示しない
  • GROUPINTERNAL
    分類変数のフォーマットでカテゴリ値をグループ化しない
  • MISSING
    欠損値をカテゴリとして扱う
  • MLF
    マルチラベルフォーマット(多重範囲定義フォーマット)を使用する
  • ORDER=DATA | FORMATTED | FREQ | UNFORMATTED
    カテゴリ値の並び順の基準を指定
  • STYLE=スタイル指定
    スタイルを指定する

VARステートメント

VAR 分析変数1 分析変数2 .. </ オプション>..;

表上でN以外の統計量の対象となる変数(分析変数)を宣言する.Nのほか,PCTN等のN関連の統計量についても,分析変数の対象にはしなくてよい.
VARステートメントオプション

  • WEIGHT=重み変数名
    統計量を求める際の重みを格納した変数名を指定する.重み変数の値が欠損ならば,データから除外される.値が0や負値であれば,重みは0とされるが,オブザベーションの件数にはカウントされる.
  • STYLE=スタイル指定
    スタイルを指定する

TABLEステートメント

TABLE 表頭表現式 </ オプション>;
TABLE 表側表現式, 表頭表現式 </ オプション>;
TABLE 頁表現式, 表側表現式, 表頭表現式 </ オプション>;

表の構成を定義する.カンマ(,)によって,最大3つの表構成表現式からなり,1つの場合は,表頭(横1行)のみの1次元の表,2つの場合は,表側と表頭をもつ縦横の行列(2次元),3つの場合は,頁と表側と表頭をもつ複数の行列(3次元)の表が指定できる.表現式の構文は,頁表現式, 表側表現式, 表頭表現式とも共通である.

TABLEステートメントオプション

  • FORMAT_PRECEDENCE=PAGE | ROW | COL フォーマットが複数の次元で指定されていた場合の優先次元を指定
  • BOX= _PAGE_ | "文字列" 表左上の欄の表示内容を指定する
  • MISSTEXT="文字列" 欠損時の表示文字を指定
  • NOCONTINUED 表途中の改ページのCONTINUEDメッセージを表示しない
  • CONDENSE 表をできるだけ詰めて表示する
  • PRINTMISS 特定の表において該当カテゴリがない行または列があってもそれを表示する.
  • FUZZ=数値 0にみなす非常に小さい値を指定
  • INDENT=数値 交差する下位カテゴリの表示開始インデント数を指定
  • ROW=FLOAT 空白となった表側があれば切り詰める
  • RTSPACE=数値 表側にとる幅を百率で指定.デフォルトは,25.
  • CONTENTS=
  • STYLE=スタイル指定
  • STYLE_PRECEDENCE=PAGE | ROW | COL
 

表現式の構成要素

  • 分類変数
    分類変数名
    CLASSステートメントで指定されている変数
  • 分析変数
    分析変数名
    VARステートメントで指定されている変数
  • ALL
    ALL
    分類カテゴリが1つのダミー分類変数
  • 基本統計量キーワード
    N | SUM | MEAN | STD | Q1 ...
    分析変数に対して統計量を指定.Nだけは,分類変数に指定できる.指定がない場合,分析変数にはSUM,分類変数にはNがデフォルトとして指定されたものと解釈される.
    詳細は,基本統計量キーワード
  • パーセント統計量キーワード
    PCTN | PCTSUM | ROWPCTN ..
    TABULATEプロシジャでは,汎用的な統計量キーワードに加えて,以下の比率を表示するパーセント統計量が指定できる
    対象変数      分類 分析
    統計量      件数比率 合計比率
    パーセント    PCTNPCTSUM
    横パーセントROWPCTNROWPCTSUM
    縦パーセントCOLPCTNCOLPCTSUM
    シートパーセントPAGEPCTNPAGEPCTSUM
    レポートパーセントREPPCTNREPPCTSUM
  • フォーマット修飾子
    *F=フォーマット名
    統計量に対し,表示する値のフォーマットを個別に指定する.
  • ラベル
    ="ラベル"
    変数や統計量に対し,表示するラベルを指定する.
  • スタイル指定
  • 交差演算子
    *
    分類変数や分析変数,統計量キーワードを組み合わせて表示することを指定
  • 並列演算子
    (空白)
    表示要素を並べて表示させることを指定
  • 括弧
    ( .. )
    並列表示要素に共通な要素をまとめて記述する場合に使用
  • 分母指定子
    < .. >
    PCTN,PCTSUMなどの分母の範囲を指定

表現式の構文

凡例 CVARn 分類変数,VVARn 分析変数

 

分類変数を指定すると,そのカテゴリ値の数だけセルが用意され,各セルに対応する度数が表示されます.複数の分類変数を*やカンマ(,)で交差させると,セルの数は,各カテゴリ数の積の数の分だけ作られます.

 

分類変数1つだけの表現式

  • 表頭に分類変数CVARのカテゴリが並んだ横1行の度数表
    CVAR
    CVAR*N など
  • 表側に分類変数CVARのカテゴリが並んだ縦1列の度数表
    CVAR , ALL
    CVAR , N など

分類変数2つの表現式

  • 表頭または表側に分類変数CVAR1とCVAR2の交差したカテゴリが並んだ横1行または縦1列の度数表
    CVAR1*CVAR2
    CVAR1*CVAR2*N
    CVAR1*CVAR2 , N など
  • 表頭または表側に分類変数CVAR1とCVAR2のカテゴリが並列に並んだ横1行または縦1列の度数表
    CVAR1 CVAR2
    CVAR1 CVAR2 , N など
  • 表側に分類変数CVAR1のカテゴリ,表頭にCVAR2のカテゴリが並んだ2次元の度数表
    CVAR1 , CVAR2
    CVAR1 , CVAR2*N など

分類変数3つ以上の表現式

  • 頁や表側,表側に分類変数の交差と並列のカテゴリが並んだ1~3次元の度数表
    CVAR1*CVAR2*N CVAR3*N
    CVAR1*CVAR2 CVAR3 , CVAR4 CVAR5
    CVAR1 , CVAR2*CVAR3 , CVAR4 CVAR5 など
  • 括弧を使って交差と並列をまとめて表記
    (ALL CVAR1)*(ALL CVAR2) , (ALL CVAR3)*N <--  ALL CVAR1 CVAR2 CVAR1*CVAR2 , N CVAR3*N に同じ
 

分析変数を指定すると,分類変数の指定で定まったセルに,度数ではなく,分析変数の統計量が表示されます.

 

分析変数を加えた表現式

  • 分類変数で定まった表の各セルに分析変数の合計値が表示された統計表
    (ALL CVAR1)*(ALL CVAR2) , VVAR
    (ALL CVAR1)*(ALL CVAR2) , VVAR*SUM
    CVAR1*CVAR2*VVAR*SUM, ALL など
  • 分類変数で定まった表の各セルに複数の分析変数の合計値が並列に表示された統計表
    CVAR1*CVAR2*(VVAR1*SUM VVAR2*SUM), ALL など
    ERRER! CVAR1*CVAR2*(VVAR1*VVAR2*SUM), ALL <-- 複数の分析変数を,*やカンマ(,)で,交差させることはできない.
    ERRER! CVAR1*CVAR2*VVAR1, VVAR2*SUM <-- 複数の分析変数を,*やカンマ(,)で,交差させることはできない.

統計量キーワードを加えた表現式

  • 分類変数で定まった表の各セルに分析変数の複数の統計量が並列に表示された統計表
    (ALL CVAR1)*(ALL CVAR2) , VVAR*(MIN MEAN MAX STD)
    (N SUM MEAN)*VVAR*(ALL CVAR1) , ALL CVAR2  など
  • 分類変数で定まった表の各セルに複数の分析変数の複数の統計量が並列に表示された統計表
    (ALL CVAR1)*(ALL CVAR2) , (VVAR1 VVAR2)*(MEAN STD)
    ALL CVAR1 CVAR2 CVAR1*CVAR2 , VVAR1*MEAN VVAR1*STD VVAR2*MEAN VVAR2*STD は上に同じ

ラベルやフォーマットを加えた表現式

  • フォーマットは,1つの統計量に対して1つ指定することができる.
    CVAR1 , CVAR2*f=comma7.
    CVAR1 , CVAR2*N*f=comma7. は上に同じ
    (ALL CVAR1)*(ALL CVAR2) , VVAR*(MIN MEAN*f=7.2 MAX STD*f=7.2)
  • ラベルは,1つの変数または統計量に対して1つ指定することができる.
    (ALL CVAR1="LABEL1")*(ALL CVAR2) , VVAR*(MIN="最小" MEAN="平均"*f=7.2 MAX="最大" STD="標準偏差"*f=7.2)

FORMATステートメント

 FORMAT 変数 .. フォーマット ..;

分類変数のフォーマットを与える.このフォーマット値でカテゴリが区分けされる.
see also 汎用的なステートメント

KEYLABELステートメント

 KEYLABEL キーワード='文字列';
 KEYLABEL キーワード1='文字列1' キーワード2='文字列2' ..;

使用するキーワードに共通の表示ラベルを与える

KEYWORD ステートメント

 KEYWORD キーワード.. / STYLEオプション;

使用するキーワードに共通のスタイル形式を与える
see also 汎用的なオプション

CLASSLEV ステートメント

 CLASSLEV 変数 .. / STYLEオプション;

使用する分類変数のカテゴリに共通のスタイル形式を与える
see also 汎用的なオプション

BYステートメント

BY 変数 ..;

see also 汎用的なステートメント

FREQステートメント

 FREQ 変数;

see also 汎用的なステートメント

WEIGHTステートメント

 WEIGHT 変数;

see also 汎用的なステートメント

WHEREステートメント

 WHERE 条件式;

see also 汎用的なステートメント

LABELステートメント

 LABEL 変数=文字定数 ..;

see also 汎用的なステートメント

FORMATステートメント

 FORMAT 変数 .. フォーマット ..;

see also 汎用的なステートメント

サンプル

(書きかけ)

(書きかけ)

PROC TABULATEを使おう(自習用サンプルプログラム)

サンプルプログラムでTABULATEプロシジャを学習しましょう
サンプルプログラム内で使用するデータは、「c:\」にダウンロードしてください
サンプルデータfiletrain_space.txt