noumenal は正しいです。2 つのループで実行できます。ただし、別の方法は、元の値を使用して にアクセスし、VECTORそれを 1 として書き込み、他のすべての値をゼロに設定することです。
説明するために、最初にX1 to X4.
*Fake Data.
SET SEED 10.
INPUT PROGRAM.
LOOP Id = 1 TO 20.
END CASE.
END LOOP.
END FILE.
END INPUT PROGRAM.
VECTOR X(4,F2.0).
LOOP #i = 1 TO 4.
COMPUTE X(#i) = TRUNC(RV.UNIFORM(1,62)).
END LOOP.
EXECUTE.
このコードは、各変数に対応する 4 つのベクトル セットを作成しDO REPEAT、実際にVECTORスタブを参照するために使用します。そして最後にRECODE- 欠落している場合は 2 とコード化する必要があります。
VECTOR V1_ V2_ V3_ V4_ (61,F1.0).
DO REPEAT orig = X1 TO X4 /V = V1_ V2_ V3_ V4_.
COMPUTE V(orig) = 1.
END REPEAT.
RECODE V1_1 TO V4_61 (SYSMIS = 2).
元の VECTOR コマンドではすべてのスタブを書き出す必要があるため、少し面倒ですが、それをコピーして DO REPEAT サブコマンドに貼り付けることができます (または、それを実行するマクロを作成します)。
より単純な例として、A1 から 61 までの整数値を取ることができる元の変数 (たとえば ) があり、61 個のダミー変数に拡張したい場合、ベクトルを作成し、その中の位置にアクセスします。ベクター。
VECTOR DummyVec(61,F1.0).
COMPUTE DummyVec(A) = 1.
レコードの場合A = 10、ここでDummyVec10は 1 に等しくなり、他のすべてのDummyVec変数はシステムによってデフォルトで失われます。DO IF61 個の値を使用する必要はありません。
コードの残りの部分は、複数の元の変数に対して一挙に実行するための余分なものです。