在不同大小的组+ dplyr中随机分配治疗

时间:2019-07-04 08:38:24

标签: r dplyr

我有四个小组中的个人。

df <- data.frame(group=c(rep(1, 90),
                     rep(2, 110),
                     rep(3, 105),
                     rep(4, 95)),
             id=1:400)

我想将每组中的每个人随机分配给五种治疗方法之一。我可以分别为每个组执行此操作,但是我想知道如何在dplyr例程中完成该操作?

最后,df应该看起来像这样:

id   group   treat
 1   1       5
 2   1       4
 3   1       4
 4   1       3
 5   1       3

2 个答案:

答案 0 :(得分:1)

我们可以将samplereplace = TRUE一起使用

library(dplyr)
df %>% mutate(treat = sample(5, n(), replace = TRUE))

#    group  id treat
#1       1   1     3
#2       1   2     4
#3       1   3     5
#4       1   4     4
#5       1   5     5
#6       1   6     1
#7       1   7     5
#....

很明显,您也可以直接使用它而无需任何软件包

df$treat <- sample(5, nrow(df), replace = TRUE)

这里还要注意的一点是,sample(5)sample(1:5)的工作方式相同,因为它是一个数字,它会在1:5内自动扩展为sample

答案 1 :(得分:0)

我们可以使用data.table

library(data.table)
setDT(df)[, treat := sample(5, .N, replace = TRUE)][]