When i have a table like below, how can i select the second observation ?
crn id lastname
230 12 poole
230 13 sandy
230 14 cook
230 15 daniela
150 13 sandy
150 22 bob
150 18 cem
so i need to pick same crn's second lastname
crn id lastname
230 13 sandy
150 22 bob
thank you
Here is a solution:
data have;
input crn$ id lastname$;
cards;
230 12 poole
230 13 sandy
230 14 cook
230 15 daniela
150 13 sandy
150 22 bob
150 18 cem
;
data want;
set have;
by descending crn;
count + 1;
if first.crn then count = 1;
if count = 2 then output want;
drop count;
run;
Hi,
data want; set have; by crn; if first.crn then temp_obs=1; else temp_obs=temp_obs+1; if temp_obs=2 then output; run;
ASsumes the data is sorted by crn, you can change the 2 to be any obs.
Or you could try this:
data want;
do _n_=1 by 1 until(last.crn);
set have;
by crn notsorted;
if _n_=2 then output;
end;
run;
This does not assume that HAVE is sorted by (ascending or descending) CRN, but it must be grouped in the sense that observations with the same value of CRN form a block of contiguous observations.
Is it okay that CRNs with only one observation in HAVE do not occur in WANT?
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.