見たところrelevance_animalは昇順に並んでいるわけではないようですので、LAG関数で値が
変わったことを検出するのが一案かと思います。
data have;
input suborder_no suborder $ animal $ relevance_animal $ relevance $;
cards;
1 felidae tiger felidae 100%
1 felidae cat felidae 100%
1 felidae tabby_cat cat 90%
1 felidae american_shorthair_cat tabby_cat 60%
2 canidae wolf canidae 100%
2 canidae dog canidae 100%
2 canidae poodle dog 80%
2 canidae toy_poodle poodle 90%
;
data want;
set have;
by suborder_no;
if first.suborder_no then do;
animal_no=0; relevance_no=0; end;
animal_no+1;
relevance_no+relevance_animal^=lag(relevance_animal);
run;