在 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.1
到 varA.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.
一年中的每个月我都有一个变量,该变量的值是 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.1
到 varA.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.