Help using Base SAS procedures

how to get sampled output data without sorting

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 14
Accepted Solution

how to get sampled output data without sorting

Hi, every one.

 

Recently, I am trying to select some sample using PROC SURVEYSELECT procedure. 

 

 I want to give the sequence the obeservtion, for example, the I have 5 observation, 1 to 5.

 

the sequecne for sampling without replacement may be is 3 5 4 1 2. 

 

but, everytime the sas only give me the output data which has been sorted.

 

so, i only can have a data set is 1 to 5. 

 

I check the statement, the sort statement also does not provide the function I asked. 

 

if there is a easy way to get the results I want?


Accepted Solutions
Solution
‎10-26-2015 10:30 PM
Respected Advisor
Posts: 4,921

Re: how to get sampled output data without sorting

if you want your sample to appear in random order, you must generate the permutation yourself. For example:

 

data test;
call streaminit(76575);
do x = 10 to 1 by -1;
    order = rand("UNIFORM");
    output;
    end;
run;

proc surveyselect data=test out=sample5 sampsize=5 seed=866787;
run;

proc sort data=sample5 out=sample5(drop=order); by order; run;
PG

View solution in original post


All Replies
Super User
Posts: 19,792

Re: how to get sampled output data without sorting

You should post some code and what your input data looks like and what you expect.
Respected Advisor
Posts: 4,173

Re: how to get sampled output data without sorting

I would expect Proc Surveyselect to use an algorithm where it choses each record with a certain probability. If so then the sort order of the target data set should be the same like the one of the source data set (like: obs3, obs7, obs9,...).

 

Solution
‎10-26-2015 10:30 PM
Respected Advisor
Posts: 4,921

Re: how to get sampled output data without sorting

if you want your sample to appear in random order, you must generate the permutation yourself. For example:

 

data test;
call streaminit(76575);
do x = 10 to 1 by -1;
    order = rand("UNIFORM");
    output;
    end;
run;

proc surveyselect data=test out=sample5 sampsize=5 seed=866787;
run;

proc sort data=sample5 out=sample5(drop=order); by order; run;
PG
🔒 This topic is solved and locked.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 288 views
  • 0 likes
  • 4 in conversation