2017-09-29 9 views
0

私は一意の開始日と終了日に基づいて各個人のvalueZの平均値を求めています。露出Xは、それぞれの日のための多数の値を持って、それぞれの場所のために、(300以上の値をサイトごとに&日付の23点の場所は、実際に存在する)のような:DATASET1でdataset1に含まれる個体のデータセット2の平均値は、どのようにしてユニークな開始日と終了日を持つのですか?

data dataset2; 
input date location valueZ; 
datalines; 
1/1/2016 1 0.028 
1/1/2016 1 0.022 
... 
2/8/2016 1 0.041 
2/8/2016 1 0.044 
1/1/2016 2 0.056 
... 
8/8/2016 2 0.089 
1/1/2016 3 0.029 
... 
11/8/2016 3 0.083 
... 
1/1/2016 4 0.081 
... 
12/8/2016 4 0.019 
... 
10/30/2016 23 0.063 
; 

個人は場所によってデータセット2にリンクされています例えば:だから

data dataset1; 
input individual location start_date end_date; 
datalines; 
1 1 1/1/2016 12/31/2016 
2 1 3/12/2016 9/4/2016 
3 2 2/5/2016 11/5/2016 
4 19 9/30/2016 10/3/2016 
5 23 4/12/2016 12/12/2016 
... 
305 16 1/20/2016 5/15/2016 
; 

、私が個人ごとEND_DATEまでSTART_DATEからDATASET2に示される位置に基づいてvalueZの平均で終わるたいです。助けてもらえますか?

答えて

0

このようなものはありますか?

proc sql; 
    create table want as 
    select d1.individual 
     ,d1.location 
     ,avg(d2.valueZ) as avg_value 
    from dataset2 d2 
    join dataset1 d1 
    on d1.location=d2.location 
    and d2.date between d1.start_date and d2.end_date 
    group by d1.individual, d1.location 
quit; 
+0

はい!これはIMLでやろうとしていたものよりもはるかにクリーンで、すばらしく機能しました。ありがとうございました! – Danielle

+0

平均値ごとに値が欠落していた日数を生成する方法はありますか? – Danielle

+0

VALUEZの値が欠落している日付?データに表示されない日付? COUNT(DISTINCT d2.date)を試して、いくつの異なる日付値があるか調べることができます。最初から最後までの日数を引いて、どこに欠落しているかを確認することができます。 – Tom

関連する問題