2

一連の変換を実行する構文ループを作成する必要があります

これは私がする必要があることの簡単な例です

5つの果物変数を作成したい

  • apple_variable
  • banana_variable
  • mango_variable
  • papaya_variable
  • orange_variable

V1で

  • apple = 1
  • バナナ=2
  • mango = 3
  • パパイヤ=4
  • オレンジ=5

    最初のループ

    IF(V1 = {number}){fruit} _variable=VX。

    IF(V2 = {number}){fruit} _variable=VY。

    IF(V3 = {number}){fruit} _variable=VZ。

    次の果物のためにループを実行する

だから私が欲しいのは、V1、V2、またはV3に果物の番号が含まれているかどうかを確認するスクリプトです。それらの1つがそうする場合(1つだけが可能)、新しい{fruit} _variableは、VX、VY、またはVZから値を取得する必要があります。

これは可能ですか?スクリプトは200を超える変数を作成する必要があるため、手動で行うには少し時間がかかります

4

3 に答える 3

1

DO REPEATはここでは良い解決策ですが、最終的な目標は何であるか疑問に思っています。これは、これらの変換を行う必要なしに、統計の複数の応答機能を使用することで解決できる可能性のある問題のようなにおいがします。複数応答機能は、古いMULTIPLE RESPONSEプロシージャと、新しいCTABLESおよびChartBuilder機能で使用できます。

HTH、ジョンペック

于 2012-05-31T03:30:55.060 に答える
1

最初のループはコマンド内に置くことができますDO REPEAT。基本的に、変数の 2 つのリストを定義すると、一連の if ステートメントをループできます。

DO REPEAT V# = V1 V2 V3
/VA = VX VY VZ.
if V# = 1 apple_variable = VA.
END REPEAT.

1上記の例ではとがハードコードされていますapple_variableが、これを単純なマクロ ステートメントにまとめて、任意のパラメーターを取得できます。

DEFINE !fruit (!POSITIONAL = !TOKENS(1)
             /!POSITIONAL = !TOKENS(1)).

DO REPEAT V# = V1 V2 V3
/VA = VX VY VZ.
if V# = !1 !2 = VA.
END REPEAT.

!ENDDEFINE.

!fruit 1 apple_variable.

変数が 200 を超える場合、これはまだ少し面倒ですが、タスクが大幅に簡素化されるはずです。ここまでたどり着いたら、通常はリストをテキスト編集してマクロを 200 回呼び出します。この例では!fruit、数値と結果の変数名の前に挿入するだけです。これは、特にリストが静的な場合にうまく機能します。

組み込みの SPSS 機能 (主に定義済みの MACRO 内でのループ) を使用する他のアプローチは、IMO が醜い傾向があり、コードが非常に複雑になる可能性があり、多くの場合、時間の価値がありません (確かに実行可能ですが)。ただし、Python コマンドを使用したソリューションを受け入れる意思がある場合は、多少軽減されます。

于 2012-05-30T19:08:27.967 に答える