如何处理(Google表格 - 电子表格)"复选框" SPSS中的答案

时间:2012-12-27 14:21:40

标签: spss frequency google-sheets

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

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

enter image description here

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

在这种情况下,它将是:

  

Choice1,Choice2

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

  

Choice1,Choice2,Choice4

问题是SPSS没有办法分隔子串(用逗号分隔)并理解每个案例的选择有哪些共同之处。或者也许有办法,但我不知道:)

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

的表
  

Choice1,Choice2

完全不同的情况
  

Choice1,Choice2,Choice4

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

很多!

3 个答案:

答案 0 :(得分:2)

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

使用公式,假设你的复选框问题落在D栏,这将产生一个“标准化”列表:

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

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

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

如果您的语言环境使用逗号作为小数分隔符,请将{"",""}替换为{""\""}

答案 1 :(得分: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.

目前看起来如下图 - 三列(一个时间戳,两个带有我们想要的数据):

enter image description here

使用here中的一些语法,我们可以按如下方式拆分单元格:

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

结果:

enter image description here

这一次只能解决一列问题,而且我不够熟悉它就可以修改它来处理多个列。但是,如果您要切换到R,我已经有一些readymade functions来帮助处理这些情况。

答案 2 :(得分:1)

如上所述,很容易将字段拆分为单独的变量。现在将这些变量定义为多重响应集(Analyze> Tables> Multiple Response Sets),您可以使用CTABLES或MULT REPONSE过程对这些变量进行分析,并使用Chart Builder对其进行图形化