在SPSS中使用Python只使用循环重新编码某些变量?

时间:2018-01-19 18:50:59

标签: python spss survey

我试图在SPSS中使用Python来按行重新编码观察。每一行都是一个人对调查的回应。如果参与者中途退出调查,则该点的数据等于(-5)。我需要将所有-5&#更改为系统缺失,但我想保留在调查丢失之前发生的任何-5&s。

即。如果原始数据看起来像这样:

[1 2 4 -5 6 7 1 -5 -5 -5 -5 ]
[ 2 3 4 5 -5 1 -6 -5 -4 -5 -5 ]
[ 4 5 -5 -5 -5 -5 -5 -5 -5 -5 ]

它将改为:

[1 2 4 -5 6 7 1 . . . .  ]
[2 3 4 5 -5 1 -6 -5 -4 . . ]
[4 5 . . . . . . . . ] 

每一行都是不同的人对所有问题的回答。

有谁知道我怎么做这个?我曾尝试在SPSS中使用python插件来遍历行并查找索引,但我一直遇到问题。非常感谢你!!

1 个答案:

答案 0 :(得分:1)

你可以用带循环的vanilla SPSS语法做到这一点。下面是一个示例方法。

*Making fake example data.
DATA LIST FREE /X1 TO X11 (11F1.0).
BEGIN DATA
 1  2  4 -5  6  7  1 -5 -5 -5 -5
 2  3  4  5 -5  1 -6 -5 -4 -5 -5
 4  5 -5 -5 -5 -5 -5 -5 -5 -5 -5
-5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5
END DATA.

*Using vector and loop to recode ends to system missing.
VECTOR X = X1 TO X11.
LOOP #i = 11 TO 1 BY -1.
  IF X(#i) = -5 X(#i) = $SYSMIS.
END LOOP IF NOT MISSING(X(#i)).
EXECUTE.