在 SPSS 循环中计算平均值

Compute mean within SPSS loop

我需要计算一组评分的平均值(var V_Cr1 到 V_Cr11),提供相关的控制变量(var targ_i.1 到 targ_i.11) 每个评分都满足一个条件(>=4 并且没有缺失)。

起初我试图调整我发现的语法

这是我用的:

COMPUTE TARG_VCs=0.
EXECUTE.
VECTOR TARG_I = targ_i.1 to targ_i.11.
VECTOR TARG_VC = V_Cr1 to V_Cr11.
LOOP #vecid = 1 to 11.
DO IF (TARG_I(#vecid) <=4 and not missing (TARG_VC((#vecid)))).
COMPUTE TARG_VCs= TARG_VCs+ TARG_VC(#vecid).
END IF.
END LOOP.
EXECUTE.

似乎可以为我提供一个总和,尽管当条件不满足时它 returns 归零而不是丢失,我可以解决这个问题。但是,从求和到有效均值,我需要满足 targ_i 的有效 V_Cr 计数。我的数据有 targ_i <=4 并且没有丢失 V_Cr (反之亦然,但这在上面的代码中已经说明),所以简单的计数是行不通的.

我想我需要一种直接的方法来计算循环内的平均值,一种在代码中嵌入计数的方法(我一直在尝试,但没有成功),或者另一种方法来获得有效的分母我的平均计算在一边。有什么想法吗?

SPSS 语法的新手(哎呀,对任何语法来说),所以这对我来说似乎比它可能需要的要复杂得多,我敢肯定。 TIA!

下面这种做法的思路是先把变量V_Cr1复制到V_Cr11如果测试变量targ_i.1到targ_i的条件。 11 满足,否则复制变量将设置为 sysmis。在第二步中,将计算条件复制变量的平均值。

* Copy v_CrX into v_Cr_ccX if targ_i.X<=4.
DO REPEAT v_Cr = v_Cr1 TO v_Cr11
         /targ_i = targ_i.1 TO targ_i.11
         /v_Cr_cc = v_CR_cc1 TO v_CR_cc.  
   IF (targ_i<=4) v_Cr_cc = v_Cr.
END REPEAT.

COMPUTE v_CR_condmean = MEAN(v_Cr_cc1 TO v_Cr_cc11).
EXECUTE.

为什么不使用 COMPUTE 的均值函数?您可以通过诸如 mean.4(a to z).

之类的方式指定可以容忍的缺失值数量