Hi, think this works for both first and last values (easy tp modify if you want first and last in one data set, see after output) ...
data have; set have; new + missing(rating); run;
data first_nonmiss last_nonmiss; set have (where=(rating ne .)); by customer new; if first.new then output first_nonmiss;
else
if last.new then output last_nonmiss;
drop new;
run;
DATA SET: first_nonmiss
customer date rating
1000 01.01.2016 5 1000 01.08.2016 9 2000 01.01.2016 4 2000 01.10.2016 5 3000 01.04.2016 15
DATA SET: last_nonmiss
customer date rating
1000 01.05.2016 7 1000 01.12.2016 10 2000 01.06.2016 5 2000 01.11.2016 5 3000 01.09.2016 16
Or ...
data first_last; set have (where=(rating ne .)); by customer new; if first.new or last.new;
* if you want first and last indicators; first = first.new; last = last.new; drop new; run;
... View more