同时重新编码多个变量

Recoding multiple variables at the same time

所以我想循环 200 多个变量(它们没有按顺序排列)并将字符串答案重新编码为代码。 我在 excel 中有一个代码框列表,每个字符串有超过 2000 个不同的代码。 因此,由于它们不按顺序排列,我想在 SPSS 中使用 python 来做到这一点,但由于我是新手,所以我不知道如何编写实际的重新编码代码。

begin program.
import spss 
for v in ['a','b','c']: #list of variables I want to loop over
 # MISSING RECODE part ("string1"=1) ("string2"=2) ("string3"=3) etc.... up to whatever number of codes I want   
end program.

能否请您帮助解决缺少的部分代码,我的意思是语法应该是什么样子?

谢谢 M

在 SPSS 语法中,您可以一次对一组变量使用相同的重新编码模式,而无需循环,例如:

recode var1 var2 var3 ("apple"=1)("orange"=2)("banana"=3) into Nvar1 Nvar2 Nvar3.

如果您想从字符串重新编码为数字,则需要重新编码为新变量。 或者,如果您不想要新变量,您可以这样做:

recode var1 var2 var3 ("apple"="1")("orange"="2")("banana"="3").
alter type var1 var2 var3 (f6.2).

正如@eli-k 的回答所指出的,您无需在 Python 中循环或执行任何操作即可将相同的重新编码方案应用于多个变量。 Vanilla SPSS 语法可以很好地处理这个问题。然而,拥有超过 2000 个字符串到代码的配对可能会出现问题。 (有时我在调试只有 20 个配对的 RECODE 语法时遇到问题。)

解决方法是使用AUTORECODE facility together with its APPLY TEMPLATE选项:

AUTORECODE var1 var2 var3 
  /INTO nvar1 nvar2 nvar3 
  /APPLY TEMPLATE = 'my_template.sat'

SPSS 用作模板的.sat 文件只是具有不同扩展名的.sav 文件的特例。它们只有两个变量:一个名为 "Source_" 的字符串和一个名为 "Target_" 的数字变量(注意大写和结尾的下划线)。只要您使用这些变量名称,就可以通过将字符串到代码的映射从 Excel 导入 SPSS,然后另存为 .sat 文件来创建自己的模板。

关于使用 AUTORECODE 的一个关键注意事项:在数据中找到但不在 Source_ 列中的任何字符串都将自动分配新代码。