2016-12-17 16 views
1

私はこのスクリーンショットに示すようにデータセットを持っています。毎日(たとえば9:30:00)に複数の繰り返し_RICがあります。例えば、観察2と3(DDA211204700)が繰り返されます。特定の要件のSASデータ選択

enter image description here

私は、毎日の各区間内のすべての最初の_RICを選択したいと思います。たとえば、20120103、09:30:00の場合、Observation 1、2、4、6などをピックアップしたいと思います。

私は、次のコードを使用:コードは、この次のスクリーンショットのように動作しているようですが、

data test1; 
do until (last.interval); 
set test; 
    by _ric date_L_ interval; 
    if first._ric; 
    output; 
end; 
run; 

を、私はまだ私は本当にSASとの経験がほとんどないので、誰かが私のコードをチェックするために私を助けることができる願っています。ありがとう!

enter image description here

答えて

2

あなたのデータは、インターバル内の各_RICための最初のレコードを検出するために、適切に命じていません。最初にデータを正しくソートすると、ロジックが機能する可能性があります。 DOWループの内部でサブセット化IF文を使用する際には、外部DOループを中止するため、ロジックエラーが発生します。代わりに通常のIF/THENステートメント(if first._ric then output;)を使用するだけでした。しかし、このような状況ではDOWループは必要ありません。したがって、サブセットIFを使用することができます。

INTERVAL、_RIC、日付でソートできます。

data WANT ; 
    set HAVE ; 
    by interval _ric date_L_ ; 
    if first._ric; 
run; 

それとも、_RICによってソートされ、その後、INTERVAL日付と代わりにFIRST.INTERVALを使用する場合は、同じレコードを得ることができます。

あなたがグループで最も古いtime_L_を取得したいと思われ
1

、あなたもこれを試みることができる:

proc sql; 
    select * from have group by _ric,interval having time_L_=min(time_L_); 
quit; 
関連する問題