Вы спрашиваете, как удалить первую запись для PARTY_ID?
Вы можете просто изменить логику в своем выражении IF для поднабора.
data want;
set have;
by party_id;
if not first.party_id;
run;
Или другой способ - явно удалитьпервые наблюдения.
if first.party_id then delete;
Если вы спрашиваете, как удалить точные совпадения строк, PROC SQL может сделать это.
proc sql ;
create table want as
select * from have
except
select * from havenot
;
quit;
Если вы хотите удалить строки, основанные только на совпадениях ключей, томожет быть лучше в шаге данных.
data want ;
merge have havenot(in=in2 keep=party_id preference_id);
by party_id preference_id;
if not in2;
run;