我在SPSS中有一个语法,在以前(对于其他数据集)中工作正常,但现在正在行动。这是一个过滤器,使我可以选择某些其他字符串的一部分字符串。例如,我可能正在寻找带有字符串“面包”的单元格,但是在它是字符串的一部分“ breadbin”的情况下,我对它不感兴趣。 我一直这样做的方式是: 首先,有一个“简单”的字符串搜索,对于我不感兴趣的字符串的字符串,这些字符串通常不感兴趣:
COMPUTE keyword = 0.
IF (CHAR.INDEX (column1,'bread')=1) keyword = 1.
EXECUTE.
这效果很好。什么不是更复杂的过滤器:
COMPUTE keyword = 0.
IF ((CHAR.INDEX (column1,'bread')=1 | (CHAR.INDEX (column1,'breadbin')=0)) keyword = 1.
EXECUTE.
这不会遇到任何错误,但是它返回每行的值1,甚至是空白!我不知道为什么。有线索吗?
首先,当第一个(数字1)Charachter的位置存在字符串“面包”时。如果您想检查文本中的任何地方是否存在“面包” - 这样做:
(CHAR.INDEX (column1,'bread')=1)
(CHAR.INDEX (column1,'bread')>0)
您将捕获所有“面包”出现的情况而不会成为“面包鸟”的一部分。 但是,当您使用它时,为什么不搜索所有未与其他字母相关的“面包”的外观呢?这样,您就不必单独照顾每个组合。因此,您会寻找“面包”。现在,如果“面包”出现为第一个或最后一个单词,则搜索将失败,因为单词之前或之后会缺少一个空间。为了解决文本开始和文本结束的空间,以确保以下内容,然后搜索:
((CHAR.INDEX (column1,'bread')>0 & (CHAR.INDEX (column1,'breadbin')=0))