在SPSS中使用日期范围

时间:2015-12-08 12:27:12

标签: spss

我有一个变量用于一年中的每个月,其值为1(表示已在该月检查过的东西)或SYSMIS。

如何将其重新编码为新变量,例如VAR1我得到的东西像

 0 = no checks in a year
 1 = 1 check in a year
 2 = 2 checks in a year every six months
 3 = 2+ checks in a year (where 2 of them were six months apart)

作为替代方案,我一直在使用一个系统来计算那一年的总支票,然后查看是否有0,1或2+支票,但这不准确,因为我看不出是否有两张支票相隔六个月或连续两个月

NUMERIC var1_Total (F3.0).
COMPUTE var1_Total=varA.1+varA.2+varA.3+varA.4+varA.5+varA.6+varA.7+varA.8+varA.9+varA.10+varA.11+varA.12.
EXECUTE.

NUMERIC var2 (F5.0).
VALUE LABELS var2 0 '0' 1 '1' 2 '>=2'.
IF (var1_Total=0)   var2=0.
IF (var1_Total=1)   var2=1.
IF (var1_Total>=2) var2=2.
EXECUTE.

2 个答案:

答案 0 :(得分:1)

假设varA.1varA.12在数据文件中是连续的顺序,并假设当月出现的某些东西由数字代码1表示:

COMPUTE var1_Total=sum(varA.1 to varA.12).
RECODE var1_Total (3 THRU HI=3).

答案 1 :(得分:1)

所以你需要的是一个指示变量,告诉你相隔六个月至少有两次检查,对吗?

这样做:

* Check if one of the pairs (varA.1, varA.7; varA.2, varA.8; ...) both have the value 1.
DO REPEAT var_p1=varA.1 TO varA.6
          /var_p2=varA.7 TO varA.12.
    IF (var_p1=1 AND var_p2=1) six_month = 1.
END REPEAT.

然后你可以调整IF命令:

* Note that cases with var1_total>=2 but without checks six month apart will get the value 1.
IF (var1_Total=0)               var2=0.
IF (var1_Total>=1)              var2=1.
IF (var1_Total=2 AND six_month) var2=2.
IF (var1_Total>2 AND six_month) var2=3.
EXECUTE.