私は本当に簡単だと思ったことをしたい。 マイ(モック)のデータは次のようになりますカラム/変数の遅延SPSS
data list free/totalscore.1 to totalscore.5.
begin data.
1 2 6 7 10 1 4 9 11 12 0 2 4 6 9
end data.
これらは(1から5までこの模擬データにおいて、)試行回数にわたって累積合計スコアです。各試行で得られた得点の数を知りたい。言い換えれば、n + 1試行からn試行の値を差し引いてみたいと思います。結果は次のようになりますようにするため ...
COMPUTE trialscore.1 = totalscore.2 - totalscore.1.
EXECUTE.
COMPUTE trialscore.2 = totalscore.3 - totalscore.2.
EXECUTE.
COMPUTE trialscore.3 = totalscore.4 - totalscore.3.
EXECUTE.
などなど: は、最も簡単な構文は次のようになり
しかし、もちろん、それは不可能であり、 200以上の変数に対してこれを行うのは楽しいことではありません。
COMPUTE #y = 1.
VECTOR totalscore = totalscore.1 to totalscore.5.
DO REPEAT trialscore = trialscore.1 to trialscore.5.
COMPUTE #y = #x + 1.
END REPEAT.
COMPUTE trialscore(#i) = totalscore(#y) - totalscore(#i).
EXECUTE.
しかし、それは動作しません: 私はVECTORを使用して構文を記述し、次のようにREPEATを行うことを試みました。 何か助けていただければ幸いです。
ps。私はLAGを使用してみましたが、一度に1つの列を超える必要がある間、それは行をループします。
horace_vrこんにちは、あなたの助けのためにどうもありがとうございました。 私はコードを動作させるために "トライアルコア"を "totalscore"と交換する必要があると思います。 基本的には、データを転置してからラグを使用することをお勧めします。他の解決策はありますか?私は本当にインデックス/下付き文字がSPSSの構文で動作するかどうか不思議です。 また、一意のレコード識別子を持たない場合はどうすればよいですか? – TVV
@TVV:あなたは交換について正しいです。私はコードを編集して、スワッピングはもはや必要ではありません。また、レコード識別子の作成方法についての行を追加しました。私はそれを解決する方法を知らない。ベクトルを使用する場合は、前の変数のデータを常に「調べる」必要があるため、常に警告が表示されますが、これは賢明な方法ではないと思います(警告を無視し、ある時点で最終的なエラーになることもあります))。あなたもPythonを試すことができますが、それはものが複雑すぎると思います。私のコードは非常に短く、1つの場所で編集する必要があります;) –
@TVV:あなたは交換について正しいです。私はコードを編集して、スワッピングはもはや必要ではありません。また、レコード識別子の作成方法についての行を追加しました。私はそれを解決する方法を知らない。ベクトルを使用する場合は、前の変数のデータを常に「調べる」必要があるため、常に警告が表示されますが、これは賢明な方法ではないと思います(警告を無視し、ある時点で最終的なエラーになることもあります))。あなたもPythonを試すことができますが、それはものを複雑にすると思います。私のコードはかなり短く、1つの場所で編集する必要があります;) –