同时重新编码多个变量
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_ 列中的任何字符串都将自动分配新代码。
所以我想循环 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_ 列中的任何字符串都将自动分配新代码。