2017-01-05 11 views
2

特に、私がSASで変調について問題を抱えていると、多くの方々に感謝します。同じIDを持つsas変数の差

私は次のようなデータセットを持っています。

ID   key  score 
10002817 200207826243 0 
10002817 200207826271 0 
10002817 200208532180 0 
10002976 200301583978 0 
10003685 200302311690 0 
10006588 200401613047 0 
10006588 200502882618 0 
10009377 201007510866 1 
10009377 201111777969 0 
10011044 200801328219 2 
10011044 200803290654 3 
10011044 200803290728 1 
10011044 200803290905 1 
10011044 200803291161 0 

ときどきidがデータ内で繰り返されるかどうかを示します。 IDによると、スコアの差が最大になるように見たい。 つまり、次のような形式です。

ID key score diff_score 
10002817 200207826243 0 0 
10002817 200207826271 0 0 
10002817 200208532180 0 0 
10002976 200301583978 0 0 
10003685 200302311690 0 0 
10006588 200401613047 0 0 
10006588 200502882618 0 0 
10009377 201007510866 1 1 
10009377 201111777969 0 1 
10011044 200801328219 2 3 
10011044 200803290654 3 3 
10011044 200803290728 1 3 
10011044 200803290905 1 3 
10011044 200803291161 0 3 

SASでこれを行うにはどうすればよいですか?

私を助けてくれると助かります。 ありがとうございます。これが機能するためにあなたのデータをソートする必要はありませんされたのproc SQLを使用する利点の

proc sql; 
    create table want as 
    select ID, key, score, max(score)-min(score) as diff_score 
    from have 
    group by ID; 
quit; 

ワン:

答えて

1

あなたはこの使用のproc SQLを行うことができます。

+0

OPは、IDごとのスコアの最大差を探しています。あなたのソリューションはサンプルデータで動作しますが、各IDの最小スコアが0であるためです。あなたは計算を 'max(score) - min(score)'に変更する必要があります – Longfish

+0

その場にありがとう、ちょうど私の答えを編集しました。 –

関連する問題