2016-04-12 3 views
0

データは基本的に月間の構成価格です。私はAMOUNTの傾向を得たかった。各構成と全体的な傾向について、価格が12か月の期間にわたってどのように行動するかについては、sasの行レベルの値の差を取得

Proc SQLでは "dif"構文はサポートされていません。これは実際には役に立たないので、私はデータセットに通常の "do"ループを使用することができません。

だから誰でも私にこれを手伝ってもらえますか?

このコードは基本的にデータをグループ化し、その月の各構成の平均価格を取得するためのコードです。

proc sql; 

create table c.price1 as 
select 
configuration, 
month, 
mean(retail_price) as amount format = dollar7.2 

from c.price 
where 
configuration is not missing 
and month is not missing 
and retail_price is not missing 
group by configuration, month; 
quit; 

DATA:

Configuration Month  Amount 
1     1 $370.00 
1     2 $365.00 
1     3 $318.00 
1     4 $355.00 
1     5 $350.00 
1     6 $317.40 
1     7 $340.00 
1     8 $335.00 
1     9 $297.00 
1     10 $325.00 
1     11 $320.00 
1     12 $286.65 
2     1 $320.00 
2     2 $315.00 
2     3 $287.86 
2     4 $305.00 
2     5 $300.00 
2     6 $263.76 

.......など

+0

私はあなたの質問が分かりません。あなたは希望の出力を投稿してください。 dif関数でデータステップを使用できないのはなぜですか? – Reeza

+0

a.month = b.month-1とa.config = b.configの条件で、常にテーブルを自分自身に参加させることができます。 – Reeza

+0

私はdif関数を使用する場合、どのように私はそれを制御します。設定が1から2に変わると、私は$ 320- $ 286.65を望んでいません(データによると)。私はそれをグループ化したい。そのため、設定が変更されると、dif関数が新しく起動します。 – Dhananjai

答えて

0

上グループ処理によってと一緒にDIF関数を使用。

Data want; 
    Set have; 
    By config; 

     New_var = dif(amount); 

     If first.config then new_var = .; 
Run; 
+0

ありがとう!私は同じコードで私の頭を壊していた。しかし、私は気づいていなかった "もしfirst.config then new_var =。;"コーディングの一部。今度はすべてがソートされています:D – Dhananjai

+0

あなたは何とかそれを間違えました。コードとログを投稿してください。また、グループ化を定義します。 – Reeza

関連する問題