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?
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.
Ready to level-up your skills? Choose your own adventure.