删除同一日期的重复记录,但将类型添加到未删除的记录中

时间:2018-09-07 19:27:51

标签: sas

['A B', 'F G A']

![enter image description here 这删除了我想要的记录(2 06/18/2012 SMALL),但是我想要的是要么该类型应为未删除的记录指示BIG&SMALL,要么是一个新字段指示BIG&SMALL enter image description here 请注意,当同一天有重复时,只会删除小型记录。

1 个答案:

答案 0 :(得分:0)

对于TYPE和DATE2,您需要具有一些逻辑来折叠多个值。

您可以使用数据步骤。

data want ;
  do until (last.date);
    set have ;
    by id date ;
    length newtype $25 newdate2 8;
    newtype=catx(' ',newtype,type);
    newdate2 = coalesce(date2,newdate2);
  end;
  date2=newdate2;
  drop newdate2;
run;

如果您真的想坚持使用SQL(TYPE只有两个值),则可以将查询转换为联接。

proc sql noprint;
create table want2 as
select
  coalesce(a.id,b.id) as id
 ,coalesce(a.date,b.date) as date format=date9.
 ,catx(' ',a.type,b.type) as NEWTYPE
 ,coalesce(a.date2,b.date2) as date2 format=date9.
from 
 (select * from have where type='BIG') a
full join
 (select * from have where type='SMALL') b
on a.id = b.id and a.date=b.date
;
quit;

P.S。小心使用<>作为运算符。它在普通SAS代码中的含义与在SQL代码和WHERE语句中的含义完全不同。