如何使用sas宏对多个数据集进行采样

时间:2014-08-21 03:52:15

标签: sas sampling sas-macro

我有几个具有相同结构的数据集(两个变量:"代码"和"组"),而数据集名称不同(没有规则)。 现在我必须在这些数据集中进行简单的随机抽样,该方法是从每个"组"中选择一个观察。随机。 我知道如何编写基本程序:

data sample; 
set original;
where group=‘group_value’;
run;
proc surveyselect data=sample method=srs n=1 seed=821 out=fsample; 
run;

我想更有效地处理这些数据集,但我对sas宏知之甚少,任何人都可以给我一些关于使用sas宏来做这个的建议吗?

2 个答案:

答案 0 :(得分:2)

通常你不需要一个大的宏循环,使用带有BY语句的PROC会更有效率。建议:

proc surveyselect data=original method=srs ... ;
  by group ;
run ;

(如果未排序则按组排序)

答案 1 :(得分:0)

使用PROC SURVEYSELECT更好的是STRATA选项。

data have;
 do group = 1 to 5;
  do x = 1 to 5;
    output;
  end;
 end;
run;

proc surveyselect data=have n=1 out=want;
 strata group;
run;

STRATA将针对n变量的每个唯一值的strata个项目示例。 (也适用于百分比。)还需要排序(因为它的工作方式或多或少类似于by)。