Superfunction INTNX will help you 🙂
data have1;
length id date_daily ret date_month 8;
informat date_daily anydtdte.;
format date_daily yymmdd10. date_month yymmn6.;
input id date_daily ret;
date_month = intnx('month',date_daily,0,'end');
datalines;
40 3/3/2005 -0.30
40 6/23/2010 0.28
45 12/15/2015 -0.08
48 10/31/2008 -0.01
48 7/7/2007 0.78
48 1/20/2013 0.54
;
run;
data have2;
length id date_month value 8;
informat date_month anydtdte.;
format date_month yymmn6.;
input id date_month value;
datalines;
40 3/31/2005 12
40 4/30/2005 7
40 8/31/2009 10
40 6/30/2010 20
45 10/31/2015 40
45 11/30/2015 42
45 12/31/2015 24
48 10/31/2008 18
48 11/30/2008 45
48 1/20/2013 33
48 7/31/2006 12
48 7/31/2007 10
48 1/31/2013 29
;
run;
proc sql;
create table want as
select a.id, a.date_month,a.ret, b.value from have1 as a
left join have2 as b
on a.id = b.id
and a.date_month=b.date_month
;
quit;
... View more