1

50000 行の列をループしようとしています。say i の値を (i+1) と比較したいと思います。これを行う方法を知っている唯一の方法は、配列を定義することです。ただし、変数は 1 つだけです。つまり、変数の列名は Col ですが、列内の観測値は 50000 です。私が使用する場合:

  array Transform {50000} Col

ここで、Transform は配列の名前で、Col はデータセットの列名です。変数が少なすぎるため、添字エラーが表示されます。つまり、1 対 50000 のみです。{50000} を {50000,1} に置き換えてみました (および{*}) であるため、コンパイラは 50,000 個の観測値と 1 つの列しかないことを認識します。さらに、データセットを転置しようとしましたが、i と (i+1) の値に依存する別の変数を後でデータセットに追加する必要があるため、これは難しいようです。

任意の方法 (必ずしも配列ではない) を使用して i と (i+1) を比較するために列をループする方法はありますか? 助けてくれてありがとう :)

4

3 に答える 3

3

配列は変数全体で機能するため、ここでのタスクには適していません。いくつかのオプションがあります。行数が少ないことを考えると、おそらく最も簡単な方法は、行番号を 1 ずつオフセットして、データセット自体を結合することです。その後、比較を行うことができます。

data want;
merge have have (firstobs=2 rename=(col=col_plus1));
run;
于 2013-09-20T08:39:29.763 に答える
1

行 i と i+1 のみを比較したい場合は、lag関数を使用できます。これは、読み取られた前の行から値を取得します (すべての行がループで処理されるわけではないため、これをループで使用する場合は注意してください)。

于 2013-09-20T08:25:02.163 に答える