SPSS形式のデータをSAS 8.2で利用する

[OS] ALL
[リリース] ALL
[キーワード] BASE, SPSS, ENGINE, CONVERT

[質問]

SPSS形式のデータをSAS 8.2で利用するために、SASデータセットに変換したいのですが、その方法を教えてください。

[回答]

SPSS形式のデータをSASデータセットに変換するには、CONVERTプロシジャ、またはLIBNAME SPSSエンジンを利用します。
なお、読み込み元のSPSS形式のデータは、SPSSポータブル形式(拡張子:.POR)、またはSPSS/PC形式(拡張子:.SYS)に変換しておく必要があります。通常のSPSS形式(拡張子:.SAV)のデータには対応していません。

SPSSポータブル形式
(拡張子:.POR)
任意のオペレーティングシステムで作成されるSPSS移植可能ファイル形式。SASからのインポートを想定している場合、SPSSからこの形式で出力することをお勧めします。
SPSS/PC形式
(拡張子:.SYS)
SPSSのDOS環境で作成されるファイル。

1. CONVERTプロシジャでの変換
CONVERTプロシジャのSPSSオプションを利用します。


PROC CONVERT SPSS=入力ファイル参照名 OUT=出力データセット名 ;
RUN;

  • SPSSの変数名/変数ラベルは、そのまま変更されずに変数名/ラベルになります
  • SPSSのアルファベット変数は、SASの文字変数になります
  • SPSSのブランクの値は、SASの欠損値に変換されます
  • SPSSのプリント形式はSASの出力形式になります

利用する際には、以下のように事前にマクロを作成しておくと便利です。


                                                        /* マクロ定義 */
%MACRO spss2sas(IN=,OUT=);

                             /* SPSSデータにファイル参照名を指定します */
FILENAME _tmp &in ;

PROC CONVERT SPSS=_tmp OUT=&out ;           /* SPSSオプション */
RUN;

%MEND spss2sas ;

                                                    /* マクロの実行例 */
%spss2sas(in="C:¥car.por",out=work.sample1);

2. LIBNAME SPSSエンジンでの読み込み
LIBNAMEステートメントに、SPSSエンジンを指定します。そのままの形式では直接利用できないので、いったんSETステートメントで読み込みます。

LIBNAME ライブラリ参照名 SPSS <'filename'>;

                                                           /* 利用例 */
LIBNAME mylib SPSS 'C:¥car.por';

DATA sample2 ;
  SET mylib._first_;
RUN;