生成具有特定分布的随机样本

时间:2014-02-24 14:17:29

标签: r random dataframe

我喜欢从我的数据框的一列中的值生成一个随机集,该列应该具有类似于82723的平均值,并且我想打印我作为样本采用的数据帧的行。 我使用了这段代码,但听起来它不起作用。

 while(x<-sample(negative_set$V4, size=91)) {
 +  if (mean(x)==821800:821700)print

由于

我的数据是这样的:

    V1       V2     V3      V4      V5
1   chr1    752751  753092  7603    ENSG00000240453.1
2   chr1    752751  755214  2463    ENSG00000177757.1
3   chr1    761586  762902  1316    ENSG00000225880.4
4   chr1    879584  879955  19695   ENSG00000187634.6
5   chr1    879584  894689  15105   ENSG00000188976.6
6   chr1    934342  935552  1210    ENSG00000188290.6
7   chr1    1167629 1170421 2792    ENSG00000176022.3
8   chr1    1340841 1341132 291     ENSG00000264293.1
9   chr1    1370241 1378262 8021    ENSG00000179403.10
10  chr1    1550795 1551175 2037    ENSG00000272106.1
11  chr1    1550795 1565990 15195   ENSG00000197530.8
12  chr1    1592939 1594063 3277    ENSG00000272004.1
13  chr1    1592939 1624167 31228   ENSG00000189339.7

输出应采用相同的格式,但V4列的平均值为82800。

1 个答案:

答案 0 :(得分:0)

当你对输出施加约束时,说什么是“随机”是有点棘手的。例如,您可以生成n个样本,计算平均值$ mean_n $,然后找到V4值为$ n *(82800-mean_n)$的行。鉴于您的实际V4数据集,这可能无法实现。

也许你真正想要的是: 1)计算mean(V4) 2)如果该值小于82800,则随机删除某些行V4< 82800 3)如果该值大于8200,则随机删除某些行V4 > 82800

执行此操作的代码应该非常简单:只需抓取矩阵的子集并使用它们。