Try the so caled double DOW technique:
data have;
input Animal Date :date7. ampm $ TIME;
datalines;
1 11Jan17 AM 12
1 12Jan17 AM 12
1 13Jan17 AM 12
1 14Jan17 AM 12
1 15Jan17 AM 16
1 16Jan17 AM 14
2 11Jan17 AM 13
2 12Jan17 AM 14
2 13Jan17 AM 13
2 14Jan17 AM 15
2 15Jan17 AM 12
2 16Jan17 AM 11
;
data want;
do until(last.animal);
set have; by animal;
lastDate = max(lastDate, date);
end;
do until(last.animal);
set have; by animal;
daysToChalenge = intck("day",date,lastDate);
output;
end;
drop lastdate;
run;
proc print noobs; run;
... View more