如何按数据指定的不同组大小随机分配观测值
按指定组大小随机分配观测值的解决方案
嘿,我完全懂你要的是什么——不用seq()那种手动划分的方式,而是严格按照数据决定的组大小,把观测值随机分配到各组里对吧?用R的基础函数就能轻松实现,而且能保证每组的规模完全符合你的要求,步骤如下:
第一步:明确各组的目标规模
先把你需要的四个组的大小定义好,比如假设你的四个组分别需要20、30、25、25个观测值(直接替换成你实际的数据就行):# 替换成你自己的组大小 target_group_sizes <- c(20, 30, 25, 25)第二步:生成对应规模的组标识向量
用rep()函数把每个组的标签重复对应次数,生成一个包含所有组标识的向量:# 如果想用自定义标签(比如字母/名称),把1:length(...)换成你要的标签就行 group_tags <- rep(1:length(target_group_sizes), times = target_group_sizes)比如你想用自定义名称的话:
group_tags <- rep(c("RegGroup1", "RegGroup2", "RegGroup3", "RegGroup4"), times = target_group_sizes)第三步:随机打乱组标识,完成分配
用sample()函数把上面的向量彻底打乱,这样就得到了完全随机的分组结果:assigned_groups <- sample(group_tags)第四步:绑定到你的数据集
把生成的分组结果添加到你的原始数据框里就大功告成了:# 假设你的数据集叫original_data original_data$assigned_group <- assigned_groups
验证分组规模是否正确
可以用table()函数快速检查每组的数量是否和你设定的一致:
table(assigned_groups)
这种方法的核心是先按要求生成足够数量的组标识,再通过随机打乱实现无偏分配,完全避开了seq()手动划分的麻烦,而且能严格保证每组的大小符合预期。
内容的提问来源于stack exchange,提问作者bill999
相关产品推荐
相关产品推荐

