使用R将处理分配给组

时间:2015-06-22 15:43:55

标签: r

我们有7个曝光和24个组。我们希望将七个曝光中的五个随机分配到组中,同时确保我们最终得到每次曝光的一致计数,这意味着每次曝光最终暴露的次数相同。我已经编写了一些代码来执行此操作,但我无法控制每次曝光显示的次数。例如:

exposures <- c("A", "B", "C", "D", "E", "F", "G")
groups <- c(1:24)

table <- c()

for (i in 1:24){
  draw <-   sample(exposures, size=5, replace=F)
  table <- rbind(table, draw)   
} 

table(table)

因此,计数结束有点接近,但是我能做些什么来确保每次曝光的最小值?谢谢!

编辑此外,我们需要每次曝光每组只出现一次。

1 个答案:

答案 0 :(得分:1)

根据未使用的两次曝光,而不是五种曝光,更容易想到它。我们限制可以排除曝光的次数:

set.seed(1)
exc        <- draw_exc(exposures,5,24,10)
assignment <- apply(exc,1,function(x) setdiff(exposures,x))

table(exc)
# exc
#  A  B  C  D  E  F  G 
#  7  4  6  6  8 10  7 

table(assignment)
# assignment
#  A  B  C  D  E  F  G 
# 17 20 18 18 16 14 17 

以下是插图:

{{1}}

因此,对于24组,最大排除数等于24减去最小出现次数。这个循环效率不高,但它似乎完成了工作。