3

Googleフォームを使用して行った電子調査を分析していますが、次の問題があります。

次の図に示すように、質問の1つは、チェックボックスの形式で複数の回答を受け取ることができます。質問はギリシャ語なので、質問を簡単にするために、各回答の横にChoice1、Choice2、Choice3などを追加しました。

ここに画像の説明を入力してください

誰かがChoice1とChoice2を選択したときの私のデータでは、彼がチェックした文字列をコンマで区切って連結した答えがあります。

この場合、次のようになります。

Choice1、Choice2

他の誰かがChoice1、Choice2、Choice4をチェックした場合、私のデータでの彼の答えは次のようになります。

Choice1、Choice2、Choice4

問題は、SPSSにはサブストリング(コンマで区切られている)を区切り、各ケースに共通する選択肢を理解する方法がないことです。または、方法はあるかもしれませんが、私にはわかりません:)

たとえば、この質問に対して簡単な頻度分析を行うと、知覚するテーブルが生成されます。

Choice1、Choice2

とはまったく異なるケースとして

Choice1、Choice2、Choice4

理想的には、SPSSに、これらの選択肢のそれぞれの一意の組み合わせではなく、それぞれの一意の選択肢(Choice1、Choice2、Choice3など)の頻度をカウントするように指示したいと思います。それは可能ですか?もしそうなら、それを実現するために私が研究する必要のあるドキュメントを教えていただけますか?

ありがとう!

4

3 に答える 3

2

残念ながら、これを実現するための簡単な「組み込み」の方法はありませんが、スプレッドシートの数式、またはGoogleAppsScriptを使用して確実に実現できます。

数式を使用して、チェックボックスの質問が列Dにあると仮定すると、これにより「正規化された」リストが生成されます。

=ArrayFormula(TRANSPOSE(SPLIT(CONCAENATE(D2:D&",");",")))

これを2列のリストに変換し、クエリして頻度のテーブルを返すことができます。

=ArrayFormula(QUERY(TRANSPOSE(SPLIT(CONCATENATE(D2:D&",");","))&{"",""};"select Col1, count(Col2) group by Col1 label Col1 'Item', count(Col2) 'Frequency'";0))

ロケールで小数点記号としてコンマを使用している場合は、。に置き換え{"",""}{""\""}ください。

于 2012-12-27T19:14:18.947 に答える
2

オンラインフォームからダウンロードしたCSVファイルである次のデータを使用していると想像してください。以下のテキストをコピーして貼り付け、「CourseInterestSurvey.CSV」という名前のテキストファイルに保存します。

Timestamp,Which courses are you interested in?,What software do you use?
12/28/2012 11:57:56,"Research Methods, Data Visualization","Gnumeric, SPSS, R"
12/28/2012 11:58:09,Data Visualization,"SPSS, Stata, R"
12/28/2012 11:59:09,"Research Dissemination, Graphic Design",Adobe InDesign
12/28/2012 11:59:27,"Data Analysis, Data Visualization, Graphic Design","Excel, OpenOffice.org/Libre Office, Stata"
12/28/2012 11:59:44,Data Visualization,"R, Adobe Illustrator"

次の構文を使用して、SPSSに読み込みます。

GET DATA
  /TYPE=TXT
  /FILE="path\to\CourseInterestSurvey.CSV"
  /DELCASE=LINE
  /DELIMITERS=","
  /QUALIFIER='"'
  /ARRANGEMENT=DELIMITED
  /FIRSTCASE=2
  /IMPORTCASE=ALL
  /VARIABLES=
  Timestamp A19
  CourseInterest A49
  Software A41.
CACHE.
EXECUTE.
DATASET NAME DataSet2 WINDOW=FRONT.
LIST.

現在、次の画像のようになっています。3つの列(1つのタイムスタンプと2つの必要なデータ):

ここに画像の説明を入力してください

ここからいくつかの構文を使用して、次のようにセルを分割できます。

* We know the string does not excede 50 characters.
* We got that information while we were reading our data in.
STRING #temp(a50). 
* We're going to work on the "CourseInterest" variable.
COMPUTE #temp=CourseInterest. 
* We're going to create 3 new variables with the prefix "CourseInterest".
* You should modify this according to the actual number of options your data has
* and the maximum length of one of the strings in your data.
VECTOR CourseInterest(3, a25). 
* Here's where the actual variable creation takes place.
LOOP #i = 1 TO 3. 
.  COMPUTE #index=index(#temp,","). 
.  DO IF   #index GT 0. 
.    COMPUTE CourseInterest(#i)=LTRIM(substr(#temp,1, #index-1)). 
.    COMPUTE #temp=substr(#temp, #index+1). 
.  ELSE. 
.    COMPUTE CourseInterest(#i)=LTRIM(#temp). 
.    COMPUTE #temp=''. 
.  END IF. 
END LOOP IF #index EQ 0. 
LIST.

結果:

ここに画像の説明を入力してください

これは一度に1つの列のみを対象とし、複数の列で機能するように変更するのに十分な知識がありません。ただし、Rに切り替える場合は、このような状況に正確に対処するのに役立つ既製の 関数がすでにいくつかあります。

于 2012-12-28T09:02:56.490 に答える
1

上記のように、フィールドを個別の変数に分割するのは簡単です。次に、これらの変数を複数の応答セットとして定義し([分析]>[テーブル]>[複数の応答セット])、CTABLESまたはMULT REPONSEプロシージャを使用してこれらを分析し、チャートビルダーを使用してグラフ化できます。

于 2012-12-28T14:16:02.127 に答える