2017-06-22 81 views
1

我有两个表,这对于简单起见有:条件合并

表1:

Date  ID 
20170401 X 
20170501 Y 
20170601 Z 

表2:

Date  ID 
20170201 Z 
20170301 Y 
20170501 X 

我想创建一个新的表格,它具有表格1中的所有内容,除非表2中的前一日期发生了ID。

期望的输出对于表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; 

感谢

回答

0

不幸的是SAS覆盖具有相同名称的变量,所以在表2重命名的日期。合并ID并只保留在table1中并传递日期标准。然后放下date2列,因为它不需要。

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

感谢您的帮助,但此解决方案正在合并table1中的ID与table1中table1中不存在的日期。如果我只希望table1中的ID与table1中的日期一致,那么我该怎么做?谢谢。 –

+0

这比较复杂,你想匹配ID,日期,然后排除一个ID,如果它有另一个* table2的日期早于匹配的行吗? – mjsqu