# SPSS AUTORECODE - 保存并应用模板出错的问题
***SPSS 语法示例来自 [www.spss-tutorials.com](/spss-syntax-examples) .**
***设置测试数据。**
```spss
data list free/v1.
begin data
1 2 3 4 5 6
end data.
value labels v1 1 'Very bad' 2 'Bad' 3 'Not good, not bad' 4 'Good' 5 'Very good' 6 'No answer'.
variable labels v1 "Variable one".
string v2 (a20).
compute v2 = valuelabels(v1).
variable labels v2 "Variable two".
execute.
以上代码首先创建了一个名为 v1
的变量,并赋予它 1 到 6 的数值,同时使用 value labels
(值标签) 定义了这些数值对应的文本标签,例如 1 对应 ‘Very bad’。接着,创建了一个字符型变量 v2
,并将 v1
的值标签赋给 v2
。
*使用 AUTORECODE 仅仅是为了创建模板。
autorecode v1 /into v3/save template 'likert.sat'.
这行代码使用 AUTORECODE
命令,将 v1
变量重新编码成新的变量 v3
,同时将编码方案保存为一个模板文件 likert.sat
。 重要的是要注意到,此时 AUTORECODE
的目的是生成模板,而非直接应用。
*尝试将 v2 转换为正确编码的数值型变量。
autorecode v2/into v4/apply template 'likert.sat'.
这里尝试将字符型变量 v2
应用之前保存的模板 likert.sat
,将其重新编码为数值型变量 v4
。
*v4 的编码不正确,并且与 v1 不同。
set tnumbers both.
frequencies v1 v4.
这段代码首先设置 tnumbers
为 both
,这样在结果中会同时显示数值和值标签。然后使用 frequencies
命令计算 v1
和 v4
的频数,用于比较它们的编码是否一致。 运行后你会发现 v4
的编码是错误的,与 v1
的编码不同。
*查看 AUTORECODE 模板。
get file 'likert.sat'.
***奇怪。没有应用编码方案的痕迹。**
display dictionary.
这段代码首先使用 get file
命令打开保存的模板文件 likert.sat
。 然后,使用 display dictionary
命令显示模板文件的字典信息。你会发现模板文件中并没有包含用于将 v2
转换为 v4
的编码方案。
问题分析:
问题在于 SPSS 的 AUTORECODE
命令在保存模板时,可能没有正确保存从字符型变量到数值型变量的转换规则。 AUTORECODE
保存的模板主要用于对 数值型变量 进行重新编码,对于字符型变量,应用模板可能无法达到预期的效果。
解决方法:
使用
RECODE
命令代替AUTORECODE
:RECODE
命令可以更精确地控制变量的重新编码过程,并且可以直接定义字符型变量到数值型变量的转换规则。手动编写编码方案: 分析
v2
的值,并手动编写RECODE
命令,将v2
的每个值映射到对应的数值。
示例 (使用 RECODE
命令):
RECODE v2
('Very bad'=1) ('Bad'=2) ('Not good, not bad'=3) ('Good'=4) ('Very good'=5) ('No answer'=6)
INTO v4.
VARIABLE LABELS v4 "Recoded Variable two".
VALUE LABELS v4
1 'Very bad' 2 'Bad' 3 'Not good, not bad' 4 'Good' 5 'Very good' 6 'No answer'.
EXECUTE.
frequencies v1 v4.
这段代码使用 RECODE
命令直接将 v2
的每个值标签映射到对应的数值,并将结果存储到 v4
中。 之后,定义 v4
的变量标签和值标签,并计算频数进行验证。 ```