2016-11-06 11 views
0

次のコードを使用して列の最大値と最小値の差を計算しましたが、スマートな方法は嫌いです。だから誰も私にいくつかの提案を与えることができますか?SAS - 最大値と最小値の差を計算する方法は?

p.s.私は、この違いに基づいてデータセットを削除したいので、差を新しい変数としてデータセットに戻す必要があります。

proc univariate noprint date=test; 
var time_l_; 
output out=result max=max min=min; 
run; 

data test; 
set result test; 
run; 

data test; 
set test; 
gap=max-min; 
run; 

答えて

0

実際には、私は良い結果を考えています。これは絶対に最速の方法ではありませんが、高速な方法よりも複雑さが少ないので、驚くべきパフォーマンスが必要ない場合はおそらく最高です。

最大/最小データセットを作成してから、if _n_ = 1 then set result;を使用すると、1回だけ表示されます。変数はSETステートメントに持ち込まれるため、自動的にRETAINされます。同じデータステップでギャップを計算します。

proc univariate noprint data=sashelp.class; 
    var age; 
    output out=result max=max min=min; 
run; 

data test; 
    if _n_=1 then set result; 
    set sashelp.class; 
    gap = max-min; 
run; 
0

SQLソリューションは簡単ですが、リマリングに関するログにメッセージが残ります。

Proc SQL; 
Create table want as 
Select *, max(age) as max_age, min(age) as min_age, calculated max_age - calculated min_age as age_diff 
From have; 
Quit; 
0

range機能を使用して単純なSQLソリューション:

proc sql; 
create table want as 
    select *,range(age) as age_range 
    from sashelp.class; 
quit; 
関連する問題