SAS-如何根据条件选择随机样本

时间:2019-07-11 20:22:27

标签: sas sampling

我有一个SAS数据集,其中包含一列数字,范围从-2000到4000。 我想根据以下条件选择37个随机样本。 如果num在-2000到-1000之间,请从该范围中随机选择10个样本, 如果num在-1000到0之间,则从该范围中随机选择15个样本, 如果num在0到1000之间,则从该范围内随机选择12个样本,

我尝试了以下操作:

proc surveyselect data=save.table
   method=srs n=37 out=save.table_sample seed=1953;
run;

但是,这将使我从整个人群中随机抽取37个样本。我想根据数据范围随机选择。

请帮助提供SAS代码,在此先感谢!

2 个答案:

答案 0 :(得分:2)

  1. 在数据集中创建可用于分组分析的分组变量。

    data output;
    set save.table;
    if number < -1000 then group=1;
    else if number < 0 then group=2;
    else if number < 1000 then group=3;
    run;
    
  2. 将PROC SURVEYSELECT与具有相同变量GROUP的数据集以及样本量一起使用,或在PROC SURVEYSELECT中列出样本量。

    proc surveyselect data=output
    method=srs n=37 out=save.table_sample seed=1953 sampsize=(37 15 12);
    strata group;
    run;
    

由于未提供示例数据而无法测试,因此这里是使用SASHELP.HEART的示例

proc sort data=sashelp.heart out=heart; by chol_status; run;


proc surveyselect data=heart (where=(not missing(chol_status))) method=srs sampsize=(5 10 15) out=want;
strata chol_status;
run;

答案 1 :(得分:1)

如果您想继续使用proc surveyselect,那么一个简单的方法是:

data set1 set2 set3;
  set save.table;
  if number < -1000 then output set1;
  else if number < 0 then output set2;
  else if number < 1000 then output set3;
run;

然后在这3个数据集中使用不同的n值三次调用proc surveyselect