クロス集計表読み込みマクロ クロス集計表をそのまま読み込み、クロス表分析などができるようにします。 次のようなデータを処理します。 (0) begin data. 札幌 508 196 156 128 新潟 332 64 92 20 神戸 4 4 396 108 福岡 172 32 180 28 end data. 行の変数名 region, 列の変数名を content とします。上のデータの列の第1カテゴリーは,第8カラムから7カラム使用し、次の第2カテゴリーは第15カラムから7カラム使用し...ています。このように同じ幅をしめるテーブルを扱います。 8 15 22 29 | | | | 1111111222222233333334444444 12345678901234567890123456789012345 札幌 508 196 156 128 新潟 332 64 92 20 神戸 4 4 396 108 福岡 172 32 180 28 このようなデータを処理するとき、 (1)crosstb.sps をシンタックス窓に呼び出し、全範囲を指定し(ctrl+a)走らせる(ctro+r)。 (2)シンタックス窓に次のコマンドを入れる。 !crosstb rowvar=region / colvar=content ncolvar=4 scolumn=8 width=7. ^^^^^^ ^^^^^^^ ^ ^ ^ 行変数の名前 列変数の名前  列変数の 列変数開始 1列変数のカラム数 カテゴリー数 桁位置 (3)このあとデータを入れて、その範囲を指定し、走らせる。(0)のデータ。 このマクロの後の例参照してください。 *crosstb.sps ------------------. preserve. set printback=off. *---------------------------------. * クロス集計表の読み込みマクロ. * 必要オプション:なし. * K.Hori(hori@ec.kagawa-u.ac.jp) * 1996.8.20. *example. /* !crosstb rowvar=region / colvar=content ncolvar=4 scolumn=8 width=7. */ *---------------------------------. define !crosstb( FILE=!charend('/')!default(n)/ rowvar=!charend('/')!default(row) /* 行の変数名 rowvar */ /colvar=!TOKENS(1)!default(col) /* 列の変数名 rowvar */ /ncolvar=!TOKENS(1)!default(4) /* 列変数カテゴリ数 */ /scolumn=!TOKENS(1)!default(1) /* 数値始まりのカラム */ /width=!TOKENS(1)!default(5) /* その桁数 */ ). preserve. new file. input program. !IF (!length(!FILE) > 2) !THEN data list file=!FILE /!rowvar 71. !else . data list /!rowvar 71. !IFEND. compute !rowvar = ($casenum-1)/!ncolvar+1. leave !rowvar. loop !colvar = 1 to !ncolvar. + reread column_ = !scolumn+(!colvar-1)*!width. + data list notable/ fre 1-!width. + end case. end loop. end input program. format !rowvar !colvar(f3.0). Weight BY fre. restore. !enddefine. restore. *ここまでマクロ----------. *----------------------------- コマンドの例. !crosstb rowvar=region / colvar=content ncolvar=4 scolumn=8 width=7. *-----------------------------. begin data. 札幌 508 196 156 128 新潟 332 64 92 20 神戸 4 4 396 108 福岡 172 32 180 28 end data.