DATA Step, Macro, Functions and more

How to create a random sample showing picked observation numbers?

Reply
N/A
Posts: 0

How to create a random sample showing picked observation numbers?

I want to create a sample from the sasuser.revenue dataset and insert it as a new dataset called work.revenue. This is the code I am submitting:

data work.revenue (drop = i samplesize);
samplesize = 10;
do i = 1 to samplesize;
pickit = ceil(ranuni(0) * totobs);
set sasuser.revenue point = pickit nobs = totobs; output;
end;
stop;
run;

It is working perfectly fine.

However, how can I have the variable called pickit to be part of my final dataset? Although this is a random sampling, I want to know which observations were picked during the process.

Thanks for the help
Super User
Posts: 5,258

Re: How to create a random sample showing picked observation numbers?

This is what the documentation says about the point option:

"The POINT= variable is available anywhere in the DATA step, but it is not added to any new SAS data set"

But nothing is stopping you from assigning another variable the same value, which will then end up in your output table:

data work.revenue (drop = i samplesize);
samplesize = 10;
do i = 1 to samplesize;
pickit = ceil(ranuni(0) * totobs);
pick = pickit;
set sashelp.class point = pickit nobs = totobs;
output;
end;
stop;
run;

Regards,
Linus
Data never sleeps
N/A
Posts: 0

Re: How to create a random sample showing picked observation numbers?

Excellent. Thank you.
Respected Advisor
Posts: 3,899

Re: How to create a random sample showing picked observation numbers?

Hi NickSAS
Find below the code how SAS provides it to create a random sample without replacement.
If you analyse the small differences to your code then you see why your code doesn't really create a true random sample.
Cheers, Patrick

data work.rsubset(drop=obsleft sampsize);
sampsize=10;
obsleft=totobs;
do while(sampsize>0);
pickit+1;
if ranuni(0) set sasuser.revenue point=pickit
nobs=totobs;
output;
sampsize=sampsize-1;
end;
obsleft=obsleft-1;
end;
stop;
run;
Ask a Question
Discussion stats
  • 3 replies
  • 211 views
  • 0 likes
  • 3 in conversation