使用 r 将因子变量随机分配到不同的组中

randomly allocating factor variables into different groups using r

我有一个包含 9 个因子变量的列表:item <- c("a","b","c","d","e","f","g","h","i")。我想将 9 个因子变量中的每一个随机分配给 3 个组。 我试过这个脚本,但它可能需要很多工作:

gp1 <- sample(item,3,replace=F)
> gp1
[1] "b" "h" "g"

我也尝试了 cut 函数,但变量必须是数字:

gp <- cut(item, breaks = 3)
Error in cut.default(item, breaks = 3) : 'x' must be numeric

预期输出应如下所示,但变量随机分配给每个组:

grp1  grp1  grp3
d      b     i
c      e     h
a      g     f

感谢您的帮助!

只需对项目进行抽样并将其放入 matrix(如果您愿意,也可以将其转换为 data.frame):

matrix(sample(item), ncol = 3)
##      [,1] [,2] [,3]
## [1,] "b"  "d"  "a" 
## [2,] "f"  "i"  "e" 
## [3,] "h"  "g"  "c" 

如果项目不会拆分成相等的长度,您可以考虑 split,其中拆分变量基于您想要的分组数量。

例如:

item <- item[-c(1, 2)]
split(item, sample(rep(1:3, length.out = length(item))))
## $`1`
## [1] "c" "e" "i"
## 
## $`2`
## [1] "f" "g"
## 
## $`3`
## [1] "d" "h"
##