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?
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.