r语言 - 示例 ID 的 make.unique 用法



我正在尝试想出一种快速分配一些治疗ID的方法,并且...老实说,我现在可以在纸上更快地做到这一点,但我已经越界了,在我弄清楚这一点之前我不能停下来。

我想制作一个包含 35 行的表格 - 每行将包含一个包含 9 个数字(介于 1 和 12 之间(的向量,但每一行都必须是唯一的。

我尝试了突然出现在我脑海中的快速解决方案:

data.frame(replicate(9,sample(1:12,35, rep = TRUE)))

但这显然对我不起作用,因为"rep=TRUE"和"rep=FALSE"由于样本池 (1:12( 而无法按编写方式工作。有没有办法添加make.unique来解决这个问题?

谢谢!

可能有更聪明的方法可以解决这个问题,但一种相对故障安全的方法是生成比您需要的更多的,然后简单地获取前 Xunique()行。构建代码:

set.seed(1)
x <- data.frame(replicate(9,sample(1:12,1e6, rep = TRUE)))
#how many rows did we make?
nrow(x)
#> [1] 1000000
#how many unique rows?
nrow(unique(x))
#> [1] 999906
#show the top two rows while showing how to get 35 rows total
head(unique(x)[1:35, ],2)
#>   X1 X2 X3 X4 X5 X6 X7 X8 X9
#> 1  9  6  8  3 12  7 11  5  5
#> 2  4  1  8 11 12 11 11  7  6

创建于 2019-10-07 由 reprex 软件包 (v0.3.0(

假设你想要一个独特的组合,你可以使用combn生成所有可能的组合,然后取 35 个随机行的sample

# all combos
x <- as.data.frame(t(combn(1:12, 9)))
# 35 random rows
x[sample(1:choose(12,9), 35), ]

最新更新