如何根据SAS中的百分比随机分配值?

时间:2015-03-13 14:47:18

标签: variables statistics sas

这个问题与SAS有关。我需要随机生成一个变量,让它称之为物种,"其中60%的病例为1,其余40%的病例为0。 x_1有15,000个案例(其中x_1是随机的,均匀分布的变量)需要分配1或0.它必须使用if-then-do语句生成,对吧?到目前为止,我有:

data species_list;
    set work.species_list;
    if x_1 <= 0.6 then do;
        Species = 1;
    end;
    else if x_1 > 0.6 then do;
        Species = 0;
    end;
run;

这部分很容易。但是,我需要将1和0随机分配给15,000个案例,而不是基于某些不平等。

2 个答案:

答案 0 :(得分:2)

如果x_1是随机的,均匀分布的变量,那么这个不等式确实“随机”地分配它们(无论如何都可以用计算机完成)。

从我的记忆中,你的不平等会或多或少地起作用。它并不完美;最有可能你的随机数的下限为0,上限为0.999999,所以它不会给完美 60/40分割,尽管有15000,你可能会看到一个相当接近的匹配。

更好的方法是使用proc surveyselect。这不需要您的x_1变量。

proc surveyselect data=species_list out=species_out samprate=0.6 outall seed=12345;
run;

那将抽样60%并给他们一个1,剩下的40%将是0.简单就是馅饼。

答案 1 :(得分:1)

如果要在SAS中生成随机变量,可以使用rand函数。

您可以使用:

Species = ifn(rand("uniform") <= 0.6, 1, 0);

或:

x_1 = rand("uniform");
if x_1 <= 0.6 then Species = 1;
else Species = 0;

取决于哪一个更容易理解。