我有四个小组中的个人。
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
答案 0 :(得分:1)
我们可以将sample
与replace = 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)][]