重复采样无需更换

时间:2013-04-08 15:57:10

标签: algorithm r random sample

我想从1:1000的群体中生成10个随机数,生成此数字的代码重复10次。我希望采样无需替换,以便10组10个随机数之间的交集为空。

首先,如果我在r中使用了sample函数并将replace设置为false,那么它并没有多大帮助 当我在网上搜索时,我发现了一个叫做urn的函数,但是我无法在r中下载软件包。所以简而言之,我想做的就像下面的代码一样:

http://rss.acs.unt.edu/Rdoc/library/urn/html/urn.html 但手动而不是使用urn包

我尝试了以下代码,但生成的样本并不是唯一的,我从“数据”中随机选择行

for(j in 1:10) {
    x=unique(data[,2])
    tr=sample(length(x),0.9*length(x),replace=FALSE)
}

2 个答案:

答案 0 :(得分:3)

考虑到@ ElKamina的评论,您可以使用sample生成100个数字并将它们分配到10 x 10矩阵中:

matrix(sample(1:1000, 100, FALSE), ncol=10)

答案 1 :(得分:0)

我喜欢样本100的值并将它们放在10 x 10矩阵中最好,但另一种选择是从完整列表中对第1个10进行采样,然后使用setdiff来计算不包含10的集合已经选择,从该组中选择另外10个,再次使用setdiff等等。

如果您提前知道每个样本中有多少样本或多少样本,这种方式可能会更好,但在这些情况下,您可以使用sample随机置换整个1000列表,然后只需从置换列表中挑选出小组。