No.17604 複数回答のデータ処理  【山野】 2012/10/30(Tue) 09:10

私は,SPSSユーザーです。もちろんExcelも使用します。現在データ数がかなり多い調査のデータ解析をしています。 いくつかある複数回答OKの質問に対する分析データで困っています。この調査では,例えば質問に対して複数の選択肢(例えば,A,B,C,D,E)に対し て,回答が3つまでOKであれば,回答欄は3つあります。それを入力した現在のデータ(Excel)では,回答欄ごとにまとめてあり,3つある回答欄ごと に,A,B,C,D,Eの値があり,欠損値(たぶんほぼ無回答)の値もあります。通常,複数選択のデータ処理の場合,選択肢(A,B,C,D,E)ごと に,1=選択肢が選ばれた,0=選択肢が選ばれなったた,で処理していくものだと思うのですが,現在の回答欄ごとのデータを,選択肢ごとのデータに変換で きないでいます。ちなみにSPSSの「出現数の計算」を使うと,欠損値が見えなくなってしまいます。できれば欠損値を残した状態で分析したいとおもうので すが。どうしたらよいかアドバイスをいただけますと幸いです。

No.17605 Re: 複数回答のデータ処理  【青木繁伸】 2012/10/30(Tue) 10:31

SPSS も Excel もよく知らないので,方針だけ
データは最大3個の回答が3列に入っているということですね。

ま ず,3列(A, B, C 列とする)に分かれている回答文字を一つの文字列(D列に作る)にする。Excel だと =A1&B1&C1 ですかね。次に,その文字列に "A" が含まれているかどうかをみて,含まれていれば1,含まれていなければ0を返す式 =IFERROR(MIN(SEARCH("A",D1),1),0) を E 列に作る。以下,"B", "C", "D", "E" が含まれるかどうかの式を F 列以降に作る。そしてそれらを2行目以降にコピーする。

関数は,もっと適切なものがあるのでしょうが,とりあえず。
SPSS でやる場合も同じような方針でできるでしょう。compute とか computeif を使うのかな?

それにしても,「回答が3つまでOK」とは...

No.17606 Re: 複数回答のデータ処理  【山野】 2012/10/30(Tue) 21:52

返信ありがとうございます。
にもかかわらず,私の応答が遅れすみません。
先生のアドバイスを参考にexcelなどの関数をもう一度見てみます。
tryしてみたいと思います。それでうまくいかなければまたご相談させてください。
ありがとうございました。

No.17646 Re: 複数回答のデータ処理  【山野】 2012/11/07(Wed) 12:34

再度,お願いしております。
先生からご教示いただいた方法を実行してみたのですが,すると欠損値(無回答)も0に組み込まれてしまいます。
欠損値は欠損値として残す方法はないでしょうか?
ご無理を言ってすみません。

No.17647 Re: 複数回答のデータ処理  【青木繁伸】 2012/11/07(Wed) 12:37

変数変換の「前」に,「欠損値の場合は結果を欠損値とする」をやればよいだけでしょう。

No.17656 Re: 複数回答のデータ処理  【山野】 2012/11/08(Thu) 19:24

お返事をいただきながら,お礼が遅くなりすみません。
もし,可能なら教えていただきたいのですが,excelでの欠損値処理というのが分かりません。SPSSのようにたとえば,999という数値を当てはめるということでしょうか?
し かし,欠損値に何かの数値をあてはめたとして,数値である限りでは,先生からご教示いただいた方法では,結果としては,欠損値は0=選択肢が選ばれなった として処理されてしまう気がします。すみません,あまりに初歩的なことを聞いているようで心苦しいので,もしお答えいただけるならということで構いませ ん。

No.17657 Re: 複数回答のデータ処理  【青木繁伸】 2012/11/08(Thu) 21:39

Excel に欠損値処理なんて高級なものはないでしょう。
セルに欠損値を表すと定義した特定の値があれば欠損値とするというようなことでしょう。

> 欠損値は0=選択肢が選ばれなったとして処理されてしまう気がします

やってみれば分かることですが,やり方が分からないと言うことでしょうか...

> もちろんExcelも使用します

というのなら,これくらいはできて欲しいものです。

前にも言ったけど,私は Excel なんか使わないので,もっとうまい方法があると思いますが,初歩的なやり方でちゃんと処理できます。

A 列に "A", "B", "C", "D", "E" からなる文字列
A 列が欠損値なら "*" とする(文字は何でもよい)

B 列には A 列に "A" が含まれていれば 1 含まれていなければ 0 ただし 欠損値の場合は missing とする
C 列には A 列に "B" が含まれていれば 1 含まれていなければ 0 ただし 欠損値の場合は missing とする
D 列には A 列に "C" が含まれていれば 1 含まれていなければ 0 ただし 欠損値の場合は missing とする
E 列には A 列に "D" が含まれていれば 1 含まれていなければ 0 ただし 欠損値の場合は missing とする
F 列には A 列に "E" が含まれていれば 1 含まれていなければ 0 ただし 欠損値の場合は missing とする

B2 に入れる式 =IF(A2="*","missing",IFERROR(MIN(SEARCH("A",A2),1),0))
C2 に入れる式 =IF(A2="*","missing",IFERROR(MIN(SEARCH("B",A2),1),0))
  :
B3 に入れる式 =IF(A3="*","missing",IFERROR(MIN(SEARCH("A",A3),1),0))
C3 に入れる式 =IF(A3="*","missing",IFERROR(MIN(SEARCH("B",A3),1),0))
  :
B4 に入れる式 =IF(A4="*","missing",IFERROR(MIN(SEARCH("A",A4),1),0))
C4 に入れる式 =IF(A4="*","missing",IFERROR(MIN(SEARCH("B",A4),1),0))
  :
2行目に入れる数値をちゃんと作れば,3 行目以降はそれをコピー

A2="*","missing" の "*" は A 列で欠損値を表す文字列(何でもよいので,欠損値が空文字列で入力されているなら A2="" とする。
A2="*","missing" の "missing" は A 列が 欠損値のときに変換されるものだからなんでもよい。文字列でなくても数値でもなんでも(あとで SPSS なんかで困らないように)

そんな風にすれば,以下のように処理できるでしょう。ちゃんと関数が書けたかどうかのテストデータも処理させてちゃんとできることを確認すべし。


No.17669 Re: 複数回答のデータ処理  【山野】 2012/11/12(Mon) 22:47

ご回答ありがとうございます。
先生のご教授があって,ようやくSPSSで関数を使い,これを解決できる方法を見つけました。
Excel を含め,ソフトの関数の勉強が必要なことを実感しました。
ありがとうございます。
あまりに基本的な質問をしてしまい,すみません。
今後ともよろしくお願いします。

● 「統計学関連なんでもあり」の過去ログ--- 045 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る