我正在研究R,面临着下面的组合问题,初始情况是一个512行的 Dataframe ,包含数字1到8的所有可能的三元组组合:
expand.grid(rep(list(1:8), 3))
现在我想从这个 Dataframe 中抽取420行样本,以便每列中每个数字的频率尽可能相似。
随机产生的表看起来像这样,包含--取决于概率--非常波动的频率。
expand.grid(rep(list(1:8), 3)) %>%
filter(row_number() %in% sample(1:nrow(.), 420))
为了获得尽可能相等的频率,是否存在某种约束?
**编辑:**但是,结果不一定是随机的。有没有办法过滤420行最多相同的频率?
1条答案
按热度按时间bpsygsoo1#
分层抽样
请注意,
expand.grid
使变量的第一个变化最快,最后一个变化最慢......使用分层抽样,将行分为8*8=64个组、层,并从每个组、层中抽取6或7个样本,因为R代码如下:
然后查看每个变量的频率表: