我有几个具有相同结构的数据集(两个变量:"代码"和"组"),而数据集名称不同(没有规则)。 现在我必须在这些数据集中进行简单的随机抽样,该方法是从每个"组"中选择一个观察。随机。 我知道如何编写基本程序:
data sample;
set original;
where group=‘group_value’;
run;
proc surveyselect data=sample method=srs n=1 seed=821 out=fsample;
run;
我想更有效地处理这些数据集,但我对sas宏知之甚少,任何人都可以给我一些关于使用sas宏来做这个的建议吗?
答案 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
)。