我有一份财务顾问名单,我需要为每位顾问提取4个样本,但是我需要强制获得2个抵押贷款,1个贷款,1个信用卡可以说这4个样本。
Survey select语句中是否有一种方法可以设置每层提取的特定样本数?我知道你可以对1个类别进行分层并将其设置为相同的数字。我希望我可以使用员工姓名的映射+每个类别留下的样本数量,并使用调查选择利用它来动态地进行。
我以此为例,但这只是对员工进行分层,每位员工给我4分。我需要进一步对产品类型进行分层,并将其设置为每个产品的特定样本量。
proc surveyselect data=work.Emp_Table_Final
method=srs n=4 out=work.testsample SELECTALL;
strata Employee_No;
run;
谢谢我知道这可能听起来很复杂,但如果我知道它可能,那么我可以谷歌休息
答案 0 :(得分:0)
是的,您可以将数据集作为n
选项的目标。该数据集必须:
SAMPSIZE
或_NSIZE_
以及要选择的数字有关详细信息,请参阅documentation。
data sample_counts;
length sex $1;
input sex $ _NSIZE_;
datalines;
F 5
M 3
;;;;
run;
proc sort data=sashelp.class out=class;
by sex;
run;
proc surveyselect n=sample_counts method=srs out=samples data=class;
strata sex;
run;
对于两个变量它是相同的,你只需要sample_counts中的两个变量。当然,它会使它变得更加复杂,你可能希望以自动化的方式生成它。
proc sort data=sashelp.class out=class;
by sex age;
run;
data sample_counts;
length sex $1;
input sex $ age _NSIZE_;
datalines;
F 11 1
F 12 1
F 13 1
F 14 1
F 15 1
M 11 1
M 12 1
M 13 1
M 14 1
M 15 1
M 16 0
;;;;
run;
/* or do it in an automated way*/
data sample_counts;
set class;
by sex age; *your strata;
if first.age then do; *do this once per stratum level;
if age le 15 then _NSIZE_ = 1; *whatever your logic is for defining _NSIZE_;
else _NSIZE_=0;
output;
end;
run;
proc surveyselect n=sample_counts method=srs out=samples data=class;
strata sex age;
run;