SAS:加入日期以汇总一列

时间:2016-10-22 09:27:28

标签: date sas

我在SAS编码时遇到问题。

我有一系列日期表A:

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

谢谢!

1 个答案:

答案 0 :(得分: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;