問題はSAS9.1.3にあり、AとBの2つのデータセットがあります。
セットAは、日付と名前を含むメインデータセットです。
data Aa;
input date name $ ;
datalines;
20120102 A
20110102 B
20120102 C
20110102 A
20120102 B
20110102 C
;
セットBには、セットAにマージしたいデータが含まれています。
data B;
input date name $ rate;
datalines;
20120101 A 0.01
20120101 B 0.02
20120101 C 0.03
20110101 A -0.01
20110101 B -0.02
20110101 C -0.03
;
SAS procsqlにfetchxxx行がないことを理解しているため、セットBに行数を追加しました。
proc sort data = b; by descending date name ;run;
data b1;
set b;
ind = _n_;
run;
私がやりたいのは、BからAへの最新のレートをマージすることです。そして私のprocsqlは次のようになります。
proc sql;
create table new as
select a.*,b.rate
from Aa a left join b1 b
on a.name = b.name and a.date>=b.date
group by b.ind having min(b.ind)=b.ind;
quit;
しかし、私の結果は次のようになります。
20110102 A .
20110102 B .
20110102 C .
20120102 A -0.01
20120102 B -0.02
20120102 C -0.03
期待される結果は次のとおりです。
20110102 A -0.01
20110102 B -0.02
20110102 C -0.03
20120102 A 0.01
20120102 B 0.02
20120102 C 0.03