1

御時間ありがとうございます!

私のデータフレームは単純です。2 つの列: 最初の列には遺伝子型 (1 ~ 39) があり、2 番目の列には特性値 (数値、連続) があります。8 つの遺伝子型を選択し、関連する特性値の平均値と標準偏差を計算したいと思います。

最後に、8 つの遺伝子型を 10,000 回サンプリングし、各サンプルについて、関連する特性値の標準偏差と平均値を取得したいと考えています。理想的には、これは、各行がサンプルを表し、各遺伝子型が 8 列、stdev が 2 つの最後の列、およびそれらの遺伝子型に関連付けられた特性値の平均を表すマトリックスになります。これは別の方向に向けることもできます。

  1. 両方の値が新しいサンプルに表示されるように、データ フレーム内の 2 つの異なる列からどのようにサンプリングしますか? つまり、平均値と標準偏差が計算された遺伝子型と特性値

  2. 上記で説明したように、このサンプルをどのようにマトリックスに入れるのですか?

  3. このプロセスを 10,000 回繰り返すにはどうすればよいでしょうか。

再度、感謝します!

4

1 に答える 1

5

これは、8 つの特性のランダム サンプルで遺伝子型を持つすべての行の単一のサンプルを返します。

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

このreplicate関数は、ランダムなプロセスを繰り返すように設計されています。このような 2 つの遺伝子型のサンプルから「trait」の sd を取得することを 3 回繰り返します。

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

これは、サンプル ID を平均値と sd 値とともに記録します。

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 に答える