【发布时间】:2018-02-24 21:34:03
【问题描述】:
我的数据是纵向的。
VISIT ID VAR1
1 001 ...
1 002 ...
1 003 ...
1 004 ...
...
2 001 ...
2 002 ...
2 003 ...
2 004 ...
我们的最终目标是在每次访问中选出 10% 的人进行测试。我尝试使用 proc SURVEYSELECT 来执行 SRS 而无需替换并使用“VISIT”作为分层。但最终的样本会有重复的 ID。例如,可以在 VISIT=1 和 VISIT=2 中都选择 ID=001。
有什么方法可以使用 SURVEYSELECT 或其他程序(R 也可以)吗?非常感谢。
【问题讨论】:
-
所以您想从每次访问中抽取 10%,但最终数据集中的所有
ID都应该是唯一的? -
是的。就像你说的那样。
-
只要访问的ID是唯一的,你可以使用ave:
dat$picked <- ave(is.numeric(dat$VISIT), dat$VISIT, sample(c(TRUE, FALSE), length(x), probs=c(.1, .9), replac=TRUE))。 -
@Imo 这并不能确保最终数据集具有唯一 ID。
-
您的约束可能意味着,在对上次访问进行抽样时,没有剩余的 ID 尚未为上次访问抽样。如果发生这种情况,你想怎么办?
标签: r sas sas-macro statistical-sampling