Help using Base SAS procedures

Select seond observation

Posts: 47

Select seond observation

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 

Valued Guide
Posts: 864

Re: Select seond observation

Here is a solution:


data have;
input crn$ id lastname$;
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;

Super User
Super User
Posts: 9,599

Re: Select seond observation



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;

ASsumes the data is sorted by crn, you can change the 2 to be any obs.

Trusted Advisor
Posts: 1,256

Re: Select seond observation

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;

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?

Ask a Question
Discussion stats
  • 3 replies
  • 4 in conversation