我正在分析我使用Google表单进行的电子调查,我遇到了以下问题。
其中一个问题可以采用复选框形式的多个答案,如下图所示。问题是希腊语,所以我在每个答案旁边添加了一些Choice1,Choice2,Choice3等,以便于我提出问题。
在我的数据中,有人选择让我们说Choice1和Choice2, 我将得到一个答案,这是他用逗号分隔的字符串的串联。
在这种情况下,它将是:
Choice1,Choice2
如果其他人选中了Choice1,Choice2和Choice4 他在我的数据中的答案是:
Choice1,Choice2,Choice4
问题是SPSS没有办法分隔子串(用逗号分隔)并理解每个案例的选择有哪些共同之处。或者也许有办法,但我不知道:)
例如,当我对这个问题进行简单的频率分析时,会生成一个感知
的表Choice1,Choice2
与
完全不同的情况Choice1,Choice2,Choice4
理想情况下,我想以某种方式告诉SPSS计算每个唯一选择(Choice1,Choice2,Choice3等)的频率,而不是这些选择的每个独特组合。 那可能吗?如果可以的话,你可以指出我需要研究的文件来实现吗?
很多!
答案 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.
目前看起来如下图 - 三列(一个时间戳,两个带有我们想要的数据):
使用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.
结果:
这一次只能解决一列问题,而且我不够熟悉它就可以修改它来处理多个列。但是,如果您要切换到R,我已经有一些readymade functions来帮助处理这些情况。
答案 2 :(得分:1)
如上所述,很容易将字段拆分为单独的变量。现在将这些变量定义为多重响应集(Analyze> Tables> Multiple Response Sets),您可以使用CTABLES或MULT REPONSE过程对这些变量进行分析,并使用Chart Builder对其进行图形化