2016-04-18 11 views
0

データセットx =(1,4,7,8,10、................. ..)は、これらのランダムな値を持っています。私は、データセットの中央値を見つけて、それをコールシンドゥットに格納して、中央値からの各観測値の差を見つけるために使用したいと思います。データセットの中央値を保存して計算に使用する

変数名に言及するだけで、このデータセットの中央値を見つける関数は何ですか?

私は以下の形式のデータたい:

X X-median 
1 1-median 
4 4-median 
7 7-median 
8 8-median 
10 10-median 

答えて

1

は、マクロ変数では使用しないでください。それをデータセットとして結合するだけです。

proc means data=sashelp.class noprint; 
    var age; 
    output out=age_median median(age)=age_median; 
run; 

data class_fin; 
    if _n_=1 then set age_median(keep=age_median); 
    set sashelp.class; 
    age_minus_median = age - age_median; 
run; 

あなたがデータセットにすべての行にコピーし、その値(複数可)を取得する(if _n_=1と1行データセット)データセットをこのように設定し

、ソートのあなたは値によっていくつかの普遍的なでそれを合併している場合などです。

+0

感謝を。最初の部分はうまくいった!しかし、2番目の部分が発行されたので、私は呼称を使って中央値を保存し、最後のステップにそれを適用しました。 – user6037890

+2

@ user6037890マクロ変数を使用してデータを格納する習慣を身につけたくない場合。条件付きセットを使用するのは、表示されているとおり、適切な方法です。あなたは "いくつかの発行"を把握し、それを修正する必要があります。 –

0

これはPROC SQLで簡単に実行できます。

のは、あなたがテーブルAのxの値を持っていると言うと、新しいテーブルBを作成してみましょう:コードの

PROC SQL; 
    CREATE TABLE B AS SELECT x,median(x) AS median,x-median(x) AS offset FROM A; 
QUIT; 
+0

SAS 9.4以降のみ。その前に、中央値関数はproc SQL内で期待どおりに機能しませんでした。 – Reeza

関連する問題