1

谢谢你的时间!

我的数据框很简单。两列:第一列具有基因型 (1-39),第二列具有特征值(数值、连续)。我想选择 8 种基因型并计算相关性状值的平均值和标准差。

最后,我想对 8 种基因型进行 10,000 次采样,并且对于每个样本,我想获得相关性状值的标准差和平均值。理想情况下,这将在一个矩阵中,其中每一行代表一个样本,每个基因型有 8 列,最后 2 列用于 stdev 和与这些基因型相关的性状值的平均值。这也可以以另一种方式进行。

  1. 如何从数据框中的两个不同列中采样,以便两个值都显示在新样本中?即计算平均值和标准差的基因型和性状值

  2. 如上所述,您如何将此样本放入矩阵中?

  3. 你如何将这个过程重复 10,000 次?

再次感谢!

4

1 回答 1

5

这将在 8 个性状的随机样本中返回具有基因型的所有行的单个样本:

dat[ dat$genotype %in% sample(1:39, 8), ]

replicate功能旨在重复随机过程。重复 3 次,从这样的 2 个基因型样本中获取“特征”的 sd:

dat <- data.frame(genotype=sample(1:5, 25,replace=TRUE), trait=rnorm(25) )
replicate ( 3, sd(dat[ dat$genotype %in% sample(1:5, 2), "trait" ]) )
[1] 0.7231686 0.9225318 0.9225318

这记录了带有均值和 sd 值的样本 id:

replicate ( 3, {c( samps =sample(1:5, 2), 
                   sds=sd(dat[ dat$genotype %in% samps, "trait" ]) ,
                   means = mean(dat[ dat$genotype %in% samps, "trait" ]) )} )
            [,1]      [,2]      [,3]
samps1 1.0000000 1.0000000 5.0000000
samps2 5.0000000 3.0000000 1.0000000
sds    0.8673977 0.8673977 0.8673977
means  0.2835325 0.2835325 0.2835325
于 2012-06-05T02:46:19.080 回答