首先,RECODE
命令可以接收(和输出)多个变量。请参阅此处提供的文档和示例。尽管第一个示例在该链接中提供了重新编码为相同的变量,但重新编码为不同变量的等效命令是:
RECODE V1 TO V3 (0=1) (1=0) (2,3=-1) (9=9) (ELSE=SYSMIS) INTO W1 to W3.
上述方法之所以有效,是因为 SPSS 可以直观地解释和扩展W1 TO W3
为 equal W1, W2, W3
。
您遇到的困难是,虽然 SPSS 可以读取顺序变量cqC2_1_11 TO cqC2_21_415
,因为它们是数据集中现有变量的输入,但要指定等效匹配的输出变量名称并不容易。
例如,您不能简单地指定RECODE....INTO T3B_cqC2_1_11 TO T3B_cqC2_21_415
出现双索引,并且 SPSS 不会确切知道如何扩展这些名称。
但是,例如,如果您有cqC2_1 TO cqC2_415
415 个变量,您可以使用RECODE....INTO T3B_cqC2_1 TO T3B_cqC2_415
.
因此,您最好的选择是使用 SPSSs 内置宏工具或其集成的 python 可编程性来构建自定义宏。
Python 的可编程性要优越得多,因此以下是 Python 解决方案,您可以根据您的特定需求和标准进行调整,以帮助您入门:
get file="C:\Program Files\IBM\SPSS\Statistics\23\Samples\English\Employee data.sav".
begin program.
import spss, spssaux, spssdata
spss.Submit("set mprint on.")
vd=spssaux.VariableDict(pattern="job")
spss.Submit("""RECODE %s (8 THRU HI=1) (ELSE=COPY) INTO %s.""" % ("\n".join([str(v) for v in vd]),"\n".join(["T3B_" + str(v) for v in vd])))
for v in vd:
spss.Submit("""VARIABLE LABEL T3B_%s "%s".""" %(v, "T3B_" + v.VariableLabel))
spss.Submit("set mprint off.")
end program.