我想使用PROC SURVEYSELECT模拟原始数据集中的1000个样本。我不希望SAS输出1000个采样数据集,因为它会占用大量空间。如何创建1000个指标变量并将其附加到原始数据集?如果在复制中选择了我的观察,则这些指示变量中的每一个都将具有值1,否则为0。
答案 0 :(得分:1)
关于此的规范性论文是David Cassell的Don't be Loopy。
基本核心是这句话:
proc surveyselect data=YourData out=outboot /* 1 */
seed=30459584 /* 2 */
method=urs /* 3 */
samprate=1 /* 4 */
outhits /* 5 */
rep=1000; /* 6 */
run;
其中outhits
将为每个采样行生成新记录(如果它被采样2次或更多次,它将变为2个或更多记录),变量REPLICATE
将是已创建,将存储复制号码。
它只创建一个变量(值为1-1000),但这通常是可取的:然后您可以使用BY REPLICATE;
运行分析并获得结果。
如果你需要将它变成1000个变量/每个ID一行,你可以在SurveySelect
后面有一个数据步骤并使用数组:
data want;
set outboot;
by [id-variable];
array rep[1000];
retain rep1-rep1000;
rep[replicate]=1;
if last.[id-variable] then do;
output;
call missing(of rep[*]);
end;
run;