【问题标题】:Randomly choosing multiple groups of "strings" in R在R中随机选择多组“字符串”
【发布时间】:2015-03-16 16:10:51
【问题描述】:

所以基本上我想随机排序〜200个唯一ID“数字”(由一个字母和一个数字组成的字符串,例如x1,x2,y40,...)成多组5个没有复制和一些ID“号码”没有被分配到一个组。

对于一个最小的工作示例,我创建了 32 个唯一 ID“数字”,我想将它们分类为 7 个组,每组 3 个,“使用”最多 21 个唯一 ID“数字”,剩下 11 个唯一 ID“数字” .

# creating 32 unique IDs
ID = c("y6","x1","x3", "x4", "x5","x12","x7", "x8", "x9","z6", "x10",   
   "y1","x11","z3","y2","y3", "y4", "y5", "y7", "y8", "y9", "y10",
   "x13","z1","x6","z2", "z4", "z5",  "z7", "z8", "z9","x2")

# and this would be how I create the first group of 3 unique ID "numbers"
sample(ID, 3, replace = FALSE, prob = NULL)
# OUTPUT [1] "x3" "x6" "y8"

到目前为止一切都很好,但是有没有办法做到这一点,而不必从 ID 中删除该组的选定数字,然后必须选择下一组 3 等等,直到我有 7 组 3?因为这可能适用于小型数据集,但不适用于大型数据集。

PS:是的,我已经搜索过了,但没有找到任何适用的内容,而且我有点 R 新手并且被卡住了。 :(

非常感谢任何帮助!

【问题讨论】:

  • 可能是val <- sample(ID, 21, replace=FALSE);split(val,as.numeric(gl(length(val), 3, length(val))))
  • 完美运行!谢谢!

标签: r random sample random-sample


【解决方案1】:

我认为这应该可以完成这项工作。基本上只是随机化向量然后为其分配一个组。您可以将其拆分为一个列表,但我认为最好将其保存在 data.frame 中。

```
ID<- sample(ID, length(ID), replace = FALSE)
ID<- data.frame(ID)
ID$groups<- ceiling(seq_along(ID$ID)/3)
```

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 2020-10-04
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多