我想将120名参与者分成40个块,每个参与者3个,进行分组随机化。每个块中有2位参与者被分配治疗(用1表示),而1位参与者被分配对照(用0表示)。
我想使用R程序将每个块中的数字(1、1、0)随机化。 生成我使用的数字
n00 = 1
n11 = 2
labels = rep(c(rep(0,n00),rep(1,n11)),40)
我该如何随机分配3个块中的数字,以便有2个1和1 0?
答案 0 :(得分:1)
评论。我在您的代码中看不到任何随机化。 分配两个主题有三种可能性 三分之二用于治疗,另一半用于控制: $(1,1,0),(1,0,1), (0,1,1)。$
R函数sample
使用随机数生成器进行随机采样。以下R代码将一次随机提供这三个分配之一。
如果您一开始就使用与我相同的种子,那么您将获得 和我一样的输出。对于意外的结果,可以让R选择 未知种子。
set.seed(914)
sample(c(0,1,1), 3)
[1] 0 1 1
sample(c(0,1,1), 3)
[1] 0 1 1
sample(c(0,1,1), 3)
[1] 1 0 1
sample(c(0,1,1), 3)
[1] 1 0 1
sample(c(0,1,1), 3)
[1] 1 0 1
sample(c(0,1,1), 3)
[1] 1 1 0
以下R程序将为20个块分配矩阵MAT
。 (读取列。)
您可以将20
更改为40
。
当然,为了这个 有意义的是,您必须预先将数字1-20分配给块和麻木 对街区内的人1-3。
set.seed(2019)
MAT = replicate(20, sample(c(0,1,1), 3)); MAT
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
[1,] 1 1 1 1 0 1 1 1 0 1 1
[2,] 1 0 0 1 1 0 0 1 1 1 0
[3,] 0 1 1 0 1 1 1 0 1 0 1
[,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20]
[1,] 0 1 1 1 1 0 0 1 1
[2,] 1 0 1 1 1 1 1 0 0
[3,] 1 1 0 0 0 1 1 1 1