SAS更改随机样本的比例

时间:2016-04-28 09:41:38

标签: random sas sample

有没有办法在随机抽样中改变和操纵SAS中变量的比例?

让我们说我有1000人的桌子。 (500名男性和500名女性)

如果我想随机抽取100个性别阶层样本 - 我的输出中将有50个男性和50个女性。

我想了解是否有办法获得所需的性别价值比例?

可以随机抽取100名70名男性和30名女性吗?

2 个答案:

答案 0 :(得分:3)

PROC SURVEYSELECT是这样做的方法,使用nsamprate的数据集而不是数字。

data strata_to_Sample;
  length sex $1;
  input sex $ _NSIZE_;
datalines;
M 70
F 30
;;;;
run;
proc sort data=strata_To_sample;
  by sex;
run;

data to_sample;
  set sashelp.class;
  do _i = 1 to 1e5;
    output;
  end;
run;
proc sort data=to_Sample;
  by sex;
run;

proc surveyselect data=to_sample n=strata_to_sample out=sample;
  strata sex;
run;

答案 1 :(得分:0)

通常这就是proc surveyselect的用途。

但对于快速而肮脏的datastep解决方案:

data in_data;
    do i= 1 to 500;
        sex = 'M'; output;
        sex = 'F'; output;
    end;
run;
data in_data;
    set in_data;
    rannum = ranuni(12345);
run;
proc sort data= in_data; by rannum; run;
data sample_data;
    set in_data;
    retain count_m count_f 0;
    if      sex = 'M' and count_m lt 70 then do; count_m + 1; output; end;
    else if sex = 'F' and count_f lt 30 then do; count_f + 1; output; end;
run;    
proc freq data= sample_data;
    table sex;
run;