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

时间:2015-09-26 08:59:10

标签: r cut random-sample

我有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

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

只需对项目进行抽样并将其放入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"
##