4

多分ばかげた質問...私は次のデータセットを手に入れました:

id count
x    1  
y    2
z    3
a    1
b    2
c    3
etc.

そして私はこれが欲しい:

id count group
x    1    1
y    2    1
z    3    1
a    1    2
b    2    2
c    3    2  
etc.

これが私が試したことです:

data macro_1; set vix.macro_spy; where macro=1;
count+1;
if count>3 then do;
    count=1;
end;
    group=0;
    if count=1 then group+1;
    run;

しかし、それは機能していません。'count = 1'を取得した場合、すべての'group'を1つずつ追加するにはどうすればよいですか?ありがとう。

4

2 に答える 2

5

さらにシンプル

data want;
set vix.macro_spy;
group+(count=1);
run;
于 2013-01-07T12:17:27.910 に答える
0

私はあなたが何を必要としているのか理解できません。変数の値がcount常に3 を超えるたびに値が増加するように1, 2, 3, 1, 2, 3, 1, 2, 3... 変数を生成しますか?groupcount

もしそうなら、あなたはこのようなことをすることができます:

data group;
  set vix.macro_spy;
  retain group;
  if _N_ = 1 then group = 0;
  if count = 1 then group + 1;
run;

これは私が使用している一般的なパターンです。 if _N_ = 1部分は一度だけ実行されます。ここで変数を初期化します。

retainステートメントを使用すると、DATA ステップのある反復から次の反復まで、変数の値が確実に保持されます。

于 2013-01-07T09:58:18.887 に答える