SASへのシーケンス番号の付加

AccessデータベースからSASにテーブルをインポートしていますが、シーケンスカラムが破損してしまいました。SAS で新しいシーケンス列を作成する必要があります。ソース・テーブルは定期的に更新されているので、Accessでシーケンス番号を再作成したくありません。SASに追加できる自動番号列のようなものはありますか?

このようなことができるのです。

data want;
set have;
autonumber+1;
run;

また、_N_もあります。これはデータステップループの繰り返し回数で、通常のデータステップでは行番号と等しくなります。 これはデータセットには書き込まれませんが、通常の変数として常にアクセスすることができます。

解説 (0)
ソリューション

SASでデータセットを読み込むとき、_n_は観測番号を指します。これでうまくいくはずです。

data new;
 set old;
 seqno = _n_;
run;
解説 (6)

N_が観察番号と同一でない典型的な例です。クラス変数の各値の各行に、変数の合計を追加するために使用されるDoWループです。 この場合、データステップループはx` の各値に対して一度ずつ繰り返し処理を行います。

data have;
do x = 1 to 5;
  do y = 1 to 3; 
    z=floor(7*ranuni(7));
    rownum+1;
    output;
  end;
end;
run;

data test;
 do t=1 by 1 until (last.x);
    set have;
    by x;
    sum_z+z;
 end;
 do t=1 by 1 until (last.x);
    set have;
    by x;
    output;
    put x= z= sum_z= _N_= rownum=;
 end;
 sum_z=0;
run;

ログ

x=1 z=2 sum_z=12 _N_=1 rownum=1
x=1 z=5 sum_z=12 _N_=1 rownum=2
x=1 z=5 sum_z=12 _N_=1 rownum=3
x=2 z=5 sum_z=13 _N_=2 rownum=4
x=2 z=3 sum_z=13 _N_=2 rownum=5
x=2 z=5 sum_z=13 _N_=2 rownum=6
x=3 z=5 sum_z=12 _N_=3 rownum=7
x=3 z=5 sum_z=12 _N_=3 rownum=8
x=3 z=2 sum_z=12 _N_=3 rownum=9
x=4 z=3 sum_z=12 _N_=4 rownum=10
x=4 z=5 sum_z=12 _N_=4 rownum=11
x=4 z=4 sum_z=12 _N_=4 rownum=12
x=5 z=6 sum_z=13 _N_=5 rownum=13
x=5 z=3 sum_z=13 _N_=5 rownum=14
x=5 z=4 sum_z=13 _N_=5 rownum=15
解説 (0)