【问题标题】:generate random sample with specific distribution生成具有特定分布的随机样本
【发布时间】:2014-02-24 14:17:29
【问题描述】:

我喜欢从我的数据帧的一列中的值生成一个随机集,该值的平均值应该类似于 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。

【问题讨论】:

  • 我认为没有人欢迎您来到 Stack Overflow... 欢迎来到 StackOverflow!您的问题似乎与bioconductor 有关。但是,如果我理解得很好,您想打印样本数据的行,它们的平均值等于一个值,或者在一些值之间。真的吗?您能否提供给定数据的输出结果?
  • 非常感谢,是的,您理解正确。输出应该类似于输入,但值的 V4 平均值指定了我必须拥有的行。

标签: r random dataframe


【解决方案1】:

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

也许你真正想要的是: 1) 计算mean(V4) 2) 如果该值小于 82800,则随机删除一些 V4&lt; 82800 所在的行 3) 如果该值大于 8200,则随机删除一些行,其中V4 &gt; 82800

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

【讨论】:

    猜你喜欢
    • 2011-11-10
    • 1970-01-01
    • 2011-05-31
    • 2020-01-10
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    相关资源
    最近更新 更多