SPSS一行变量中的最后一次可用测量

时间:2013-10-11 09:02:52

标签: spss

我正在寻找如何在一行变量中获得最后一次可用的测量。

数据集如下所示:

var1 var2 var3 var4 var5 ... var100

25 30 11。 。

30。 。 。 。

44 15 22 35 16 24

。 。 31 27。

我想识别最后一个可用变量,每行都有一个值。如果我能做到这一点,请告诉我,如果不将选定的变量重组为案例。

2 个答案:

答案 0 :(得分:3)

不确定。复制粘贴 - 运行整个语法,无需为演示打开任何数据。

data list free/v1 v2 v3 v4.
begin data
1 '' '' ''
1 2 '' ''
1 2 3 ''
1 2 3 4
end data.

do repeat v = v1 to v4.
if not missing(v) last_valid = v.
end repeat.
exe.

对于第一个有效值,您可以使用类似下面的语法。请注意,有一种替代方案在计算上更快(使用loopbreak)但需要更多代码。如果下面的代码需要很长时间才能完成,我会为你编写快速版本,但让我们先试试这个简单的解决方案。

data list free/v1 v2 v3 v4.
begin data
'' '' '' 4
 '' '' 3 4
'' 2 3 4 
1 2 3 4
end data.

numeric first_valid.
do repeat v = v1 to v4.
if not missing(v) and missing(first_valid) first_valid = v.
end repeat.
exe.

答案 1 :(得分:-1)

谢谢你的回答!它帮助我朝着正确的方向前进。我最后使用了你建议的循环计算连续第一个有效测量的替代代码。

一排测量中的最后可用测量:

DEFINE last_valid ()
!DO !@ = 1 !TO 100.
!LET !a=!CONCAT("v",!@). 
COMPUTE last_valid = !a.
!DOEND.
!ENDDEFINE.
last_valid.
EXECUTE.

连续第一次可用的测量:

DEFINE first_valid ()
!DO !@ = 1 !TO 100.
!LET !a=!CONCAT("v",!@). 
LOOP IF missing(first_valid) = 1.
COMPUTE first_valid = !a.
END LOOP IF first_valid > 0.
!DOEND.
!ENDDEFINE.
first_valid.
EXECUTE.