3

我正在分析使用 Google 表单进行的电子调查,但遇到以下问题。

其中一个问题可以以复选框的形式出现多个答案,如下图所示。问题是希腊语,所以我在每个答案旁边添加了一些 Choice1、Choice2、Choice3 等,以方便我的问题。

在此处输入图像描述

在我的数据中,当有人选择让我们说 Choice1 和 Choice2 时,我将得到一个答案,即他检查的字符串的串联,用逗号分隔。

在这种情况下,它将是:

选择1,选择2

如果其他人检查了 Choice1、Choice2 和 Choice4,他在我的数据中的答案将是:

选择 1、选择 2、选择 4

问题是 SPSS 无法分隔子字符串(用逗号分隔)并了解每个案例的共同点。或者也许有办法,但我不知道:)

例如,当我对这个问题进行简单的频率分析时,它会生成一个表格,可以感知

选择1,选择2

作为一个完全不同的情况

选择 1、选择 2、选择 4

理想情况下,我想以某种方式告诉 SPSS 计算每个唯一选项(Choice1、Choice2、Choice3 等)的频率,而不是这些选项的每个唯一组合。那可能吗?如果是的话,你能指出我需要研究的文件吗?

多谢!

4

3 回答 3

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.

它目前看起来像下图——三列(一列时间戳,两列包含我们想要的数据):

在此处输入图像描述

使用此处的一些语法,我们可以将单元格拆分如下:

* 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.

结果:

在此处输入图像描述

这一次只处理一列,我还不够熟悉,无法修改它以处理多列。但是,如果你要切换到 R,我已经有了一些现成的 函数来帮助处理这些情况。

于 2012-12-28T09:02:56.490 回答
2

不幸的是,没有简单的“内置”方法来实现这一点,但使用电子表格公式或 Google Apps 脚本肯定可以实现。

使用公式,假设您的复选框问题位于 D 列中,这将产生一个“标准化”列表:

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

您可以将其转换为两列列表并查询它以返回频率表:

=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 回答
1

如上所述,很容易将字段拆分为单独的变量。现在将这些变量定义为多重响应集(分析 > 表格 > 多重响应集),您可以使用 CTABLES 或 MULT REPONSE 程序分析这些变量,并使用图表生成器绘制它们

于 2012-12-28T14:16:02.127 回答