2016-10-22 31 views
0

SASでコーディングするのに問題があります。私は、各日付の値列の総和を取得する必要がSAS:日付を結合して列を合計する

Date   Value 
01Jan2016  1 
02Jan2016  0 
03Jan2016  1 
04Jan2016  1 
05Jan2016  0 
06Jan2016  1 
07Jan2016  0 
08Jan2016  1 

Iは、テーブルAの日付の範囲を有する:

Date1   Date2  
01Jan2016  04Jan2016 
01Jan2016  08Jan2016 
04Jan2016  06Jan2016 

およびIは、参照テーブルBを有します

Date1   Date2  Value 
01Jan2016  04Jan2016 3 
01Jan2016  08Jan2016 5 
04Jan2016  06Jan2016 2 
:表A、表Cで

範囲

ありがとうございました!

+0

あなたはSOのルールと一致するようにしようとしたものを投稿してください。 – Reeza

答えて

0

最も簡単な方法はproc sqlです。

ビルサンプルデータ:

data a; 
    infile datalines dlm=' '; 
    input date1 :date9. date2 :date9.; 
    format date1 date2 date9.; 
datalines; 
01Jan2016 04Jan2016 
01Jan2016 08Jan2016 
04Jan2016 06Jan2016 
; 
run; 

data b; 
    infile datalines dlm=' '; 
    input date :date9. value; 
    format date date9.; 
datalines; 
01Jan2016 1 
02Jan2016 0 
03Jan2016 1 
04Jan2016 1 
05Jan2016 0 
06Jan2016 1 
07Jan2016 0 
08Jan2016 1 
; 
run; 

そしてソリューション:

proc sql; 
    create table c as 
    select a.date1, a.date2, sum(value) as value 
    from a, b 
    where b.date between a.date1 and a.date2 
    group by a.date1, a.date2; 
quit; 
関連する問題