在SPSS循环中计算平均值

时间:2015-10-27 17:16:25

标签: loops syntax count mean spss

我需要计算一组评级(var V_Cr1到V_Cr11)的平均值,前提是每个评级的相关控制变量(var targ_i.1到targ_i.11)满足条件(> = 4且不丢失)

起初我尝试调整我找到http://stackoverflow.com/questions/12711613/loop-through-items-and-sum-items-in-spss/12794702的语法。

这就是我使用的:

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.

似乎已经为我提供了一笔钱,虽然它在不满足条件时会返回零而不是丢失,我可以解决这个问题。但是,从总和到有效均值,我需要一个满足targ_i的有效V_Cr计数。我的数据有targ_i&lt; = 4并且没有丢失,因为缺少V_Cr(反过来,但在上面的代码中已经考虑到了这一点),所以一个简单的计数不会。

我认为我需要一种简单的方法来计算循环中的平均值,一种在代码中嵌入计数的方法(我一直试着没有运气)或另一种方法来获得有效的分母我在旁边的平均计算。有什么想法吗?

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

2 个答案:

答案 0 :(得分:1)

以下方法的想法是,如果满足测试变量targ_i.1到targ_i.11的条件,则首先将变量V_Cr1复制到V_Cr11,否则复制变量将设置为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.

答案 1 :(得分:0)

为什么不在COMPUTE中使用mean函数?您可以通过mean.4(a到z)指定容错的值。