Самый простой способ сделать это - выполнить несколько шагов. Первым шагом будет создание набора данных со всеми идентификаторами, для которых последним значением будет «B».
data tmp;
set have;
by ID value1;
if last.ID and value1='B' then output;
run;
Теперь в наборе данных tmp
есть все необходимые идентификаторы, поэтому вы можете выбрать эти Идентификаторы из исходного набора данных.
proc sql;
create table want as
select *
from have
where id in (select distinct id from tmp);
quit;
Если вы хотите решить эту проблему за один шаг данных, то вы можете отсортировать исходную таблицу по убыванию значения 1 и выполнить следующий шаг данных.
proc sort data=have;
by id descending value1;
run;
data want(where=(keep_flag));
set have;
by id descending value1;
retain keep_flag;
if first.id and value1='B' then keep_flag=1;
else if first.id then keep_flag=0;
run;