You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于已有分组分布为新增参与者随机分配分组的R实现问题

动态均等分配参与者分组的R实现

需求:需要给持续新增的参与者分配0或1分组,要求两组人数始终大致均等,新增参与者时需参考已有分组的人数分布。

原代码的问题:直接使用floor(runif(1, min=0, max=2))随机生成分组,完全不考虑现有分组的人数平衡,持续添加后容易出现两组人数差距过大的情况。

改进方案

通过先统计现有分组人数,再决定新参与者的分组:

  • 若两组人数不等,将新参与者分配至人数较少的组
  • 若两组人数相等,随机分配0或1

代码实现

初始化数据框

# 初始化包含第一个参与者的分组数据框
groupData <- data.frame(participant = c(1), Group = sample(c(0,1), 1))

编写新增参与者的函数

add_participant <- function(df, new_id) {
  # 统计现有两组的人数
  count_0 <- sum(df$Group == 0)
  count_1 <- sum(df$Group == 1)
  
  # 确定新分组
  new_group <- if (count_0 < count_1) {
    0
  } else if (count_1 < count_0) {
    1
  } else {
    sample(c(0,1), 1)
  }
  
  # 合并新行到原数据框
  rbind(df, data.frame(participant = new_id, Group = new_group))
}

使用示例

# 添加参与者2
groupData <- add_participant(groupData, 2)
# 添加参与者3
groupData <- add_participant(groupData, 3)
# 继续添加更多参与者
groupData <- add_participant(groupData, 4)
groupData <- add_participant(groupData, 5)

# 查看最终分组结果
print(groupData)

效果说明

每次新增参与者时,函数会自动平衡两组人数,确保两组人数差始终不超过1;当人数相等时仍保留随机分配的特性,符合随机分组的核心要求。

内容的提问来源于stack exchange,提问作者Lea Maria Endres

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:45:49