我想比较两个数据集,其中一个属性的分层不同。是否可以在一个数据集中做分层随机抽样,但使用另一个数据集的分层?说明一下,举个例子。
数据集A有1M条记录,属性为颜色。整个数据集有50%的蓝色50%的红色。
现在我有另一个数据集Dataset B,有10万条记录,属性相同,颜色相同,但蓝色80%红色分布。
我是否可以对Dataset A进行分层随机抽样,从而得到10万条蓝色为20%,红色为80%的记录?
我还没有写出任何代码,简单是因为我不知道从哪里开始。我看了一下文档中的 proc surveyselect
并且似乎这样做是不可能的。
现在,我想手动完成,我会按颜色切割Dataset A,从蓝色中得到20k随机样本,从红色中得到80k随机样本。
但考虑到在我的真实数据集中,我想按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个性别为M的 obs和6个性别为F的 obs。