根据一个列表或一组值重新编码变量?



SPSS中是否有在列表或一组值中查找的语法? 我一直找不到使用列表/集作为参考的语法。

一个使用示例是重新编码;

DATASET ACTIVATE DataSet1.
STRING V2 (A8).
RECODE V1 ('a' = 'group1') ('b' = 'group1') ('c' = 'group1') INTO V2.
EXECUTE.

与其像上面那样键入每个值,我会使用像 SQLIN这样的函数,如果它存在的话。

逻辑:

if V1 IN (a,b,c,e...) then V = "group1"...

谢谢!

以下是一些帮助您入门的可能性和示例:

您的recode命令可以更紧凑,如下所示:

recode V1 ('a' 'b' 'c'='group1') ('d' 'e' 'f'='group2') INTO V2.

any函数为您提供一个逻辑值。例如:

if any(V1,'a', 'b', 'c') [do something]. /* can also use DO IF.

compute group1=any(V1,'a', 'b', 'c').

如果要搜索值中的字符串,可以这样使用char.index(在此示例中,搜索字符串"abc"被拆分为一个字符串,因此测试V1是否分别包含"a","b"和"c"中的每一个(:

if char.index(V1,'abc',1)>0 V2='group1'.

对于更复杂的选项,您可以使用loopdo repeat循环访问值。例如,如果 V1 包含 'd'、'e' 或 'f',则此循环将为 V2 提供 'grp1' 的值,对于包含 'a'、'b' 或 'c'、'grp2' 的值:

do repeat MyStr='a' 'b' 'c' 'd' 'e' 'f'/grp='grp1' 'grp1' 'grp1' 'grp2' 'grp2' 'grp2'.
if char.index(V1,Mystr)>0 v2=grp.
end repeat.

最新更新