SPSS ALTER TYPE 报告错误的值?
作者:Ruben Geert van den Berg 发表于 SPSS Blog
在某些情况下,SPSS 24 版本中的 ALTER TYPE 命令在将字符串转换为数值时,似乎会报告不正确的转换后的值。这会导致数据混乱,而 SPSS 却报告一切正常。让我们尝试用下面的例子重现这个问题。
示例
我们导入了一些 .csv 数据,其中一些数值用 “a” 标记。这表示这些是估计值,而不是测量值。由于这些标记,一些变量被导入为字符串变量。下面的语法从这些数据中重新创建一个微型样本。
* 创建迷你测试数据。;
DATA LIST FREE/s1 (A2).
BEGIN DATA
'' '1' '1a' '2' '2a' '3' '3a' '4' '4a' '5' '5a'
END DATA.
结果
使用 ALTER TYPE 转换为数值
现在,我们将使用下面的语法将字符串变量转换为数值变量。由于我们的变量_似乎_只包含个位数整数,我们选择将其转换为 f1
格式。作为额外的安全检查,我们将检查哪些原始值被转换为哪些新值。
* ALTER TYPE 并报告转换后的值。;
ALTER TYPE s1(F1)
/PRINT ALTEREDVALUES.
结果
该表表明所有变量都已按预期转换。SPSS 似乎正确地猜测字符串值 1a 应该更改为 1。此外,只有空字符串值在转换后才会产生系统缺失值 (system missings)。任务完成了吗?
ALTER TYPE 后的数据视图 (Data View)
乍一看,一切看起来都很棒。好吧,转换后确实有一些系统缺失值,但这些都是空字符串值。对吗?
但让我们快速再看一下我们的原始数据:我们的标记值 (flagged values) 并未像转换值表 (altered values table) 中报告的那样转换。它们都导致系统缺失值。
只有 1 个变量和 11 个案例,我们立即看到了问题。但是,实际数据包含大约 40,000 条记录,我几乎是偶然发现了这个问题。
哪些 SPSS 版本?
我的学生试图在 SPSS 18 和 22 版本中重现该问题。这两个版本都没有报告不正确的值,因为转换值表为空 - 至少对于这个例子而言是这样。
可能 /PRINT ALTEREDVALUES
子命令是在 23 或 24 版本中引入的,但命令语法参考没有提及任何相关信息。
感谢阅读!