多重回答が1変数にまとめて入力されてしまった場合
・・・というようなデータが渡されたとします。値は1変数ごとに分けて入力しなければそれぞれを区別できないって言うのに、そういうことを知らない人が平気でこんな入力をしている場合があります。
しかしこれを分析しなければならないこともありますので、データ加工でなんとかします。アプローチはいくつかあると思うのですが、そのなかの一例として参考にしてください。
SPSSのメニュー[変換]→[変数の計算]で、仮の変数「回答2」を作成します。[型とラベル]ボタンで、文字型変数かつ元の変数「回答」より2文字多い変数にしておいてください。
「回答2」の文字式は
COMPUTE 回答2 = CONCAT(",",LTRIM(RTRIM(回答)),",")
とします。元の「回答」の余白を削除し、前後に区切り文字(今回は「,」)を入れ込むかたちになります。この理由は後述します。
次に「1」という値が「回答」にあったのかなかったのかを表現する変数「回答_1」を作成します。まずは全ケースが「なかった」場合として「回答_1 = 0」という変数を設定して[貼り付け]をクリックします。
次に「あった」場合として「回答_1 = 1」を上書き計算させますが、[IF]ボタンをクリックして、条件として「INDEX(回答2,",1,") >= 1」を設定します。仮の変数「回答2」に「,1,」があった場合は、その文字位置を返しますので、1以上の値が返れば「あった」ことになります。
なぜ「1」ではなく「,1,」なのかは、「1」でヒットさせると「1」だけでなく「10」、「11から19」、「21」、「31」と、「1」ではないけど「1」が入っているためこれらもヒットしてしまうためです。区切り文字を利用して「1」だけ区別してヒットするようにし、そのために区切り文字のない値の前後にも区切り文字を入れたという次第です。
設定後、[貼り付け]をクリックします。ちなみにこの時点で実行するとこのように返されます。
[貼り付け]をクリックしますと、「なかった」場合と「あった」場合を合わせて以下のようなシンタックスが生成されます。この処理ではEXECUTEは最後にあれば他は省略できるので、余計なEXECUTEを省略して、「1」の変数を生成するコマンドをコピーして「,1,」と「変数_1」の部分を書き直すことで、他の変数のコマンドを複製します。
COMPUTE 回答_1 = 0 .
IF (INDEX(回答2,",1,") >= 1) 回答_1 = 1 .
COMPUTE 回答_2 = 0 .
IF (INDEX(回答2,",2,") >= 1) 回答_2 = 1 .
COMPUTE 回答_3 = 0 .
IF (INDEX(回答2,",3,") >= 1) 回答_3 = 1 .
COMPUTE 回答_4 = 0 .
IF (INDEX(回答2,",4,") >= 1) 回答_4 = 1 .
COMPUTE 回答_5 = 0 .
IF (INDEX(回答2,",5,") >= 1) 回答_5 = 1 .
COMPUTE 回答_6 = 0 .
IF (INDEX(回答2,",6,") >= 1) 回答_6 = 1 .
EXECUTE .






