SPSS语法中的动态变量名称引用



我想对变量组采取某些操作。每个组都有名称中的特定索引。我不想重复每个组的语法。有没有办法动态引用变量名称?

下面是语法。207是每组变量变化的索引。

DO REPEAT aa= M9_207_1 to M9_207_99.
.....
END REPEAT.
EXECUTE.

您可以使用宏来执行此操作。

首先定义宏:

define !MyMacro ()
!do !ndx=201 !to 207
  DO REPEAT aa= !concat("M9_",!ndx,"_1") to !concat("M9_",!ndx,"_99").
  .....
  END REPEAT.
  EXECUTE.
!doend
!enddefine.

然后称其为:

!MyMacro.

这里定义的宏将通过索引201、202、203等。如果您需要更具体的索引列表,则可以这样定义宏:

define !MyMacro (!pos=!cmdend)
!do !ndx !in(!1)
  DO REPEAT aa= !concat("M9_",!ndx,"_1") to !concat("M9_",!ndx,"_99").
  .....
  END REPEAT.
  EXECUTE.
!doend
!enddefine.

然后调用它,给出索引(您已单独指定每个索引(:

!mymacro 207 311 501 502 503 504 785。

听起来您可以进行一些循环操作。我经常在R中看到这种问题。我认为同样的想法也将在SPSS中起作用。通常,我会尝试以下操作:

for i in (1:207) {
  for j in (1:99) {
    M9[i,j] = ...
    certain actions...
  }
}

希望这会有所帮助。

最新更新