【发布时间】:2017-04-20 02:40:36
【问题描述】:
我想对变量组执行某些操作。每个组的名称中都有一个特定的索引。我不想为每个组重复语法。有没有办法动态引用变量名?
下面是语法。 207 是针对每组变量而变化的索引。
DO REPEAT aa= M9_207_1 to M9_207_99.
.....
END REPEAT.
EXECUTE.
【问题讨论】:
我想对变量组执行某些操作。每个组的名称中都有一个特定的索引。我不想为每个组重复语法。有没有办法动态引用变量名?
下面是语法。 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。
【讨论】:
!ind 和 !ndx 你是对的 - 我现在更正了代码,应该运行得更好
!concat("Q1_",!ind,"1") 中缺少下划线 (c) 您不能在 do repeat 循环中使用 freq。
听起来你可以做一些循环操作。我经常在 R 中看到这种问题。我认为同样的想法也适用于 SPSS。通常,我会试试这个:
for i in (1:207) {
for j in (1:99) {
M9[i,j] = ...
certain actions...
}
}
希望这会有所帮助。
【讨论】: