在 SPSS 中处理日期范围

Working with date ranges in 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.

假设 varA.1varA.12 在数据文件中是连续的,并且假设那个月发生的事情由数字代码一表示:

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

所以你需要的是一个指示变量,它告诉你是否至少有两次支票恰好相隔六个月,对吧?

这样做就可以了:

* 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.