If your data is sorted then
data want;
set have;
by id;
if first.id;
run;
When you use a By statement, which requires the data to be sorted by the variables on the statement and if you mix ascending and descending order you need to provide the same information as Proc Sort would use to sort the values, the data step creates automatic variables to identify the first and last record of each by group. You access the values using First. or Last. (dot immediately after the word first or last and before the variable name). These variables have numeric values of 1 (true) and 0 (false) and so can be used in If statements. The automatic variables are not written to the output data.
A simple: If <condition>; is known as a "subsetting if" and only records that have a true value for the condition are kept.
BTW your data step fails to run. You did not tell the input that the values of the variable A are character.