【发布时间】:2020-03-20 22:02:32
【问题描述】:
我需要计算几年。我当然可以分别调用每年的宏。但是,我更愿意只调用一次宏并使用额外的嵌套索引循环 (!DO !var = x !TO y)。
我现在的问题是我还需要一个包含计算的 !IF-!THEN-condition:!IF (!year = !prev_year+1) !THEN
然而,这似乎是不可能的。然后我用一个额外的语法编写了计算的第二部分,然后再插入。它有效,但不正确。您可以在下面找到带有示例的语法。
DEFINE !change_hh (lastyear = !TOKENS(1) / lastyear_minus_1=!TOKENS(1) / bedingung = !TOKENS(1) / eyear = !TOKENS(1))
!DO !year= 2011 !TO !lastyear.
!DO !prevyear= 2010 !TO !lastyear_minus_1.
COMPUTE prevyear= !year-1.
exe.
ALTER TYPE prevyear (F4.0).
DO IF $casenum = 1.
WRITE OUTFILE=!QUOTE(!CONCAT("path\anyname_",!year,".sps"))
/"DEFINE @bedingung() ", prevyear, " !ENDDEFINE.".
END IF.
EXE.
INSERT FILE = !QUOTE(!CONCAT("path\anyname_",!year,".sps")).
!IF (!prevyear= !EVAL(!bedingung)) !THEN
COMPUTE !CONCAT("test_year_",!eyear) = !eyear.
COMPUTE !CONCAT("test_prevyear_",!prevyear) = !prevyear.
exe.
!IFEND.
!DOEND.
!DOEND.
EXE.
!ENDDEFINE.
!change_hh lastyear_minus_1 = 2014 lastyear= 2015 bedingung = @bedingung eyear = @jahr.
我只得到变量test_year_2015 和test_prevyear_2014。怎么了?我只是不明白。
我认为它首先适用于 year = 2011 并经历了所有 prevyears。之后,它适用于 year = 2012 并再次遍历所有 prevyears。以此类推。
【问题讨论】:
-
正是我想要的。谢谢!
标签: spss