SAS数据步骤中的条件合并

时间:2017-06-22 14:08:07

标签: sas

我有两张桌子,为简单起见:

表1:

Date     ID
20170401  X
20170501  Y
20170601  Z

表2:

Date     ID
20170201  Z
20170301  Y
20170501  X

我想创建一个新表,其中包含表1中的所有内容,除非ID出现在表2中的上一个日期。

表1和表2的所需输出为:

Date    ID 
20170401 X 

这就是我现在拥有的。我不知道在哪里放置条件合并:

data new; 
merge table1 table2(in=b); 
by date ID; 
if not b [where table2.date is before table1.date]; 
run; 

由于

1 个答案:

答案 0 :(得分:0)

不幸的是,SAS会覆盖具有相同名称的变量,因此请重命名table2中的日期。合并ID并仅在表1中保留并传递您的日期标准。然后删除date2列,因为它不需要。

data new; 
  merge table1 (in=a) table2(in=b rename=(date=date2)); 
  by ID; 
  if a and not(date2<date);
  drop date2;
  run;