0

我有一组 1000 个元素,并且想将 200 个放在子集 1 中,将 300 个放在子集 2 中,将 500 个放在子集 3 中。就分配概率而言,所有元素彼此等价。如何在 R 中做到这一点?我目前的方法是先随机选择 200 个,然后将它们放入子集 1。之后,我会从剩下的 800 个中随机选择 300 个。我认为这并不完全正确。

我认为正确的方法是随机重新排序 1000 个元素序列,然后选择前 200 个,然后是第二个 300,然后是剩下的 500 个。但我不知道如何在 R 中做到这一点。

4

2 回答 2

3

您可以使用函数sample()获取原始数据的“随机排列”,然后先选择 200,然后选择 300,依此类推。

#original data    
x<-runif(1000)
#random permutation
y<-sample(x)
#data selection
y[1:200]
y[201:500]
y[501:1000]
于 2013-08-06T09:54:24.850 回答
0

这是 @Didzis 提出的用于split返回三个向量列表的稍微不同的版本(或其他内容,如果x是其他内容):

rep用于准确获取 200、300 和 500 个元素:

split(sample(x),rep(1:3,times=c(200,300,500)))

使用prob参数sample获得 200、300 和 500 个期望的元素:

split(x,sample(1:3,1000,replace=TRUE,prob=c(.2,.3,.5)))

您可能想要其中的第一个。

于 2013-08-06T10:05:18.413 回答