変数のグループに対して特定のアクションを実行したい。各グループには、名前に特定のインデックスがあります。私は各グループの構文を繰り返す必要はありません。変数名を動的に参照する方法はありますか?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を連結しますか?それはすべきではありません! – jivko
さて、私は以下を実行しようとしました: define!MyMacro(!pos =!cmdend) !do!ndx!in(!1) DO REPEAT aa =!concat( "Q1 _" ,! ind、 "_ 1" )を!concat( "Q1 _" ,! ind、 "_ 5")に変換します。 \t \t \t FREQ aa。 END REPEAT。 EXECUTE。 !doend !enddefine。 !MyMacro '010' '123'。 エラーが発生したのは >列34のエラー#6835です。テキスト:、 >マクロ式では、関数名の後に左括弧が付きませんでした。 >このコマンドの実行は停止します。 >エラー番号4508(第23欄)。テキスト:_ > DO REPEATコマンドに認識されないテキストが表示されます。それは無視されます。 >このコマンドの実行は停止します。 – jivko
1.あなたは '!ind'と'!ndx'について正しいです - 今すぐコードを修正してください。 –