2016-10-22 48 views
0

我在SAS中编写了一个问题。SAS:加入日期以总计一列

我有表格中的日期范围:

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

和我有一个参考表B:

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

我需要得到的值列的求和每个日期范围从表A

随着表C:

Date1   Date2  Value 
01Jan2016  04Jan2016 3 
01Jan2016  08Jan2016 5 
04Jan2016  06Jan2016 2 

谢谢!

+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;