SAS - 如何根据条件 select 随机样本
SAS - How to select random samples based on condition
我有一个 SAS 数据集,其中包含一列从 -2000 到 4000 的数字。
我想 select 37 个随机样本基于以下条件。
如果 num 在 -2000 到 -1000 之间,随机 select 这个范围内的 10 个样本,
如果 num 在 -1000 到 0 之间,则从该范围内随机 select 15 个样本,
如果 num 在 0 到 1000 之间,随机 select 这个范围内的 12 个样本,
我试过以下方法:
proc surveyselect data=save.table
method=srs n=37 out=save.table_sample seed=1953;
run;
但这会给我从整个人群中随机抽取 37 个样本。我想根据数据范围随机select。
请帮忙处理 SAS 代码,非常感谢!
如果您想继续使用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
三次。
在您的数据集中创建一个可用于分组分析的分组变量。
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;
将 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;
我有一个 SAS 数据集,其中包含一列从 -2000 到 4000 的数字。 我想 select 37 个随机样本基于以下条件。 如果 num 在 -2000 到 -1000 之间,随机 select 这个范围内的 10 个样本, 如果 num 在 -1000 到 0 之间,则从该范围内随机 select 15 个样本, 如果 num 在 0 到 1000 之间,随机 select 这个范围内的 12 个样本,
我试过以下方法:
proc surveyselect data=save.table
method=srs n=37 out=save.table_sample seed=1953;
run;
但这会给我从整个人群中随机抽取 37 个样本。我想根据数据范围随机select。
请帮忙处理 SAS 代码,非常感谢!
如果您想继续使用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
三次。
在您的数据集中创建一个可用于分组分析的分组变量。
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;
将 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;