是否可以使用 SAS 中另一个数据集的层进行分层随机抽样?

Is it possible to do stratified random sampling with strata from another dataset in SAS?

我正在尝试比较属性分层不同的两个数据集。是否可以在一个数据集中进行分层随机抽样,但使用另一个数据集的分层?为了澄清,一个例子:

数据集A有1M条记录,属性为color。整个数据集有 50% 蓝色 50% 红色。

现在我有另一个数据集,数据集 B,包含 100k 条记录,具有相同的属性、颜色,但具有 20% 的蓝色和 80% 的红色分布。

我是否可以对数据集 A 进行分层随机抽样,以便获得 10 万条记录,其中 20% 的蓝色和 80% 的红色?

我还没有写任何代码,很简单,因为我不知道从哪里开始。我查看了 proc surveyselect 的文档,但似乎不可能这样做。

现在,我希望手动执行此操作,我将按颜色切割数据集 A,并从蓝色中获取 20k 随机样本,从红色中获取 80k 随机样本。

但考虑到在我的真实数据集中,我想按 2 个属性进行分层,级别超过 2 个,我很乐意认为有一种更有效的方法可以做到这一点。

自从您提到 proc survey select 以来,您已经非常接近您的答案了。有一个例子给你:

proc sort data = sashelp.class out = class;
    by sex;
run;

proc surveyselect data = class out = sample sampsize=(5 6) seed=0;
    strata sex;
run;

还有 5 个 obs 的 Sex = 'M' 和 6 个 obs 的 Sex = 'F'。