Syntax 如何在SPSS中确定一串字母是否包含某个字母

Syntax 如何在SPSS中确定一串字母是否包含某个字母,syntax,spss,multiple-choice,Syntax,Spss,Multiple Choice,我正在处理一个选择题调查的数据。调查对象可以选择选项A、B、C和/或D。数据文件仅列出他们选择的回答,中间没有空格、逗号或分号。例如,选择选项a和C的受访者的数据仅为“AC”;选择选项a、B、C和D的受访者的数据为“ABCD” 我需要创建4个新变量,指示受访者是否选择了4个选项中的每一个(即,如果他们没有选择A,那么A=0;如果他们选择了A,那么A=1,依此类推)。如果响应之间没有空格或逗号,如何处理字符串数据?我将非常感谢你的帮助 OP在他的评论中正确地暗示了答案,但为了清晰起见,本着堆栈溢出

我正在处理一个选择题调查的数据。调查对象可以选择选项A、B、C和/或D。数据文件仅列出他们选择的回答,中间没有空格、逗号或分号。例如,选择选项a和C的受访者的数据仅为“AC”;选择选项a、B、C和D的受访者的数据为“ABCD”


我需要创建4个新变量,指示受访者是否选择了4个选项中的每一个(即,如果他们没有选择A,那么A=0;如果他们选择了A,那么A=1,依此类推)。如果响应之间没有空格或逗号,如何处理字符串数据?我将非常感谢你的帮助

OP在他的评论中正确地暗示了答案,但为了清晰起见,本着堆栈溢出的精神,以下是完整的答案:

假设
multi_answer
是保存调查答案的字符串变量:

DO REPEAT answers="A" "B" "C" D"
/vars=var1 to var4.
COMPUTE vars=0.
if CHAR.INDEX(multi_answer,answers)<>0 vars=1.
END REPEAT.
EXECUTE.
重复回答 /vars=var1到var4。 计算变量=0。 如果字符索引(多个答案,答案)0变=1。 结束重复。 执行。 编辑: 根据eli-k的评论,一种更为综合的方法是在
DO REPEAT
END REPEAT
结构中使用该方法:
compute vars=char.index(多答案,答案)>0。
因此,您不需要
computevars=0。
编辑结束。

如问题中所述,这两个代码将创建4个值为0或1的变量(var1 var2 var3 var4)

关于字符串函数(包括
CHAR.INDEX
函数)的IBM SPSS官方帮助:

还有可能的副本:):

我可以在其他地方找到答案。对于任何感兴趣的人来说,解决方案是使用char.index函数。这种任务的一个很好的快捷方式是
compute vars=char.index(multi\u answer,answers)>0。
所以你不需要
compute vars=0。