我想對變量組執行某些操作。每個組在名稱中都有一個特定的索引。我不想重複每個組的語法。有沒有辦法動態引用變量名?在SPSS語法中引用動態變量名稱
下面是語法。 207是每組變量的指數。
DO REPEAT aa= M9_207_1 to M9_207_99.
.....
END REPEAT.
EXECUTE.
我想對變量組執行某些操作。每個組在名稱中都有一個特定的索引。我不想重複每個組的語法。有沒有辦法動態引用變量名?在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...
}
}
希望這會有所幫助。
爲什麼要連接!ind? ndx應該不是嗎? – jivko
好的,我試圖運行以下代碼: define!MyMacro(!pos =!cmdend) !do!ndx!in(!1) DO REPEAT aa =!concat(「Q1 _」,!ind,「_ 1」 )to!concat(「Q1 _」,!ind,「_ 5」)。 \t \t \t FREQ aa。 END REPEAT。 EXECUTE。 !doend !enddefine。 !MyMacro'010''123'。 我收到的錯誤: >第34列中的錯誤#6835。文本:, >在宏表達式中,函數名後面沒有左括號。 >停止執行此命令。 >第23列中的錯誤#4508。文本:_ >無法識別的文本出現在DO REPEAT命令中。它會被忽略。 >停止執行此命令。 – jivko
1.你對'!ind'和'!ndx'是否正確 - 我現在糾正了代碼,應該運行得更好 –