根据列表或值集重新编码变量?

Recoding a variable based on a list or set of values?

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

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

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

我不会像上面那样键入每个值,而是使用像 SQL IN 这样的函数(如果存在的话)。

逻辑:

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 遍历值。例如,对于包含 'a'、'b' 或 'c'、'grp2' 的 V1 的每个值(如果 V1 包含 'd'、'e' 或 'f':

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.