Loops 对于SPSS中的每个(变量根)

Loops 对于SPSS中的每个(变量根),loops,spss,Loops,Spss,我是SPSS程序的新手,但我一直在努力寻找解决问题的方法。想法是找到一种方法来循环一些变量名(或者我认为是这样)。我想创建变量P216_XX,P217_XX,T211_XX和OCUPAC_XX,以及其他变量,如一些输入“代码>P216”11,P216”11,P216”10,P216”10,P216”10P216”13,P216.第16.第16.第16.16.我们的13

我是SPSS程序的新手,但我一直在努力寻找解决问题的方法。想法是找到一种方法来循环一些变量名(或者我认为是这样)。我想创建变量
P216_XX
P217_XX
T211_XX
OCUPAC_XX
,以及其他变量,如一些输入“代码>P216”11,<代码>P216”11,<代码>P216”10,<代码>P216”10,<代码>P216”10<代码>P216”13,<代码>P216.第16.第16.第16.16.我们的13<<代码<<<<代码>P216.我们的13.代码<<代码>P216.第16.我们的11.10P216.我们的10
OCUPAC_10
IIIDdeee

我将遵循下一个乏味的指示:

******TEDIOUS INSTRUCTION:

*****P216_XX.
IF (IIIDDDEEE=1)   P216_XX=P216_13.
EXECUTE.
IF (IIIDDDEEE=2)   P216_XX=P216_12.
EXECUTE.
IF (IIIDDDEEE=3)   P216_XX=P216_11.
EXECUTE.
IF (IIIDDDEEE=4)   P216_XX=P216_10.
EXECUTE.

*****P217_XX.
IF (IIIDDDEEE=1)   P217_XX=P217_13.
EXECUTE.
IF (IIIDDDEEE=2)   P217_XX=P217_12.
EXECUTE.
IF (IIIDDDEEE=3)   P217_XX=P217_11.
EXECUTE.
IF (IIIDDDEEE=4)   P217_XX=P217_10.
EXECUTE.

*****T211_XX.
IF (IIIDDDEEE=1)   T211_XX=T211_13.
EXECUTE.
IF (IIIDDDEEE=2)   T211_XX=T211_12.
EXECUTE.
IF (IIIDDDEEE=3)   T211_XX=T211_11.
EXECUTE.
IF (IIIDDDEEE=4)   T211_XX=T211_10.
EXECUTE.

*****OCUPAC_XX.
IF (IIIDDDEEE=1)   OCUPAC_XX=OCUPAC_13.
EXECUTE.
IF (IIIDDDEEE=2)   OCUPAC_XX=OCUPAC_12.
EXECUTE.
IF (IIIDDDEEE=3)   OCUPAC_XX=OCUPAC_11.
EXECUTE.
IF (IIIDDDEEE=4)   OCUPAC_XX=OCUPAC_10.
EXECUTE.
在stata中,该表单将使用以下内容减少前面的语法:

foreach x in  P216 P217 T211 OCUPAC {
replace `x'_XX=`x'_13 if IIIDDDEEE==1
replace `x'_XX=`x'_12 if IIIDDDEEE==2
replace `x'_XX=`x'_11 if IIIDDDEEE==3
replace `x'_XX=`x'_10 if IIIDDDEEE==4
}
*
在SPSS中,我用向量证明了,但SPSS不接受向量的根,只接受变量。我不知道如何继续,我还没有发现类似的东西


是否可以找到一个使用本机SPSS语言的解决方案?(我忘了在我的工作中,管理员不允许我们安装其他程序,如Python)。什么是可能的解决方案?

有很多方法可以简化此代码,请查阅:

  • ,SPSS的宏语言

您需要熟悉每个选项,并知道您的最终目标是评估哪个选项最适合您。

顺便说一句,您不需要所有这些“执行”。他们只会添加额外的代码行,降低您的工作速度。好的,我将根据您的建议修改我的sintax。DO REPEAT将接近foreach Stata语法的等效值。