2012-03-05 10 views
0

SASアレイを使用して、どのプログラムが最長で実行されたかを確認するために、毎月の最大値を作成する必要があります。SASアレイ - 月額最大値を作成

データは次のようになります。

Month Value Program 
    Jan  8  A 
    Jan  6  B 
    Feb  2  C 
    Feb  1  A 
    Mar  9  C 
    Mar  6  B 

のように。

誰もが、私は配列を使用していないだろう

答えて

1

を使用するように私の構文を伝えることができる...私が最初に使用し、その後、データを並べ替えます。表記

Proc sort data=data; 
by month descending value; 
run; 

Data longest; 
set data; 
by month descending value; 
if first.month then output; 
run; 

これは、最高値の月ごとの記録を提供します。

更新:

アレイの強度は、一回の観察中の変数を処理しています。配列を保持することはできますが、データが大きすぎてソートできない場合や、データステップで処理する場合は、オブザベーション全体の変数のチェックにはHashオブジェクトが適しています。

+0

これはおかげで、今朝の回答を助けてくれました。私のマネージャーは、私のSAトレーニングを改善するために配列を使ってこれをどうやって行うことができるか考えてみました。 – user1250416

0

キャロライナが述べたように、アレイは同じ観察の変数を読みとるために使用されます。ここであなたの仕事を達成するのには適していません。 これを実現するには、簡単なPROC SUMMARYがおそらく最も簡単な方法です。私はあなたの実際のデータは、実行に要した時間が数秒に記録されていると仮定し、2つのプログラムを1か月間に正確に実行することは事実上不可能です。そうでない場合は、ネクタイの場合に何をすべきかを考慮する必要があります(proc SQLはよりよいアプローチになります)。

ここでコードは、値そのものではなく値が最も高いプログラムを表示したい場合は、 'program'で角括弧内の 'value'を削除します。

data have; 
    input month $ value program $; 
    cards; 
     Jan  8  A 
     Jan  6  B 
     Feb  2  C 
     Feb  1  A 
     Mar  9  C 
     Mar  6  B 
    ; 
    run; 

    proc summary data=have nway; 
    class month; 
    output out=want (drop=_:) maxid(value(program value))=; 
    run;