ランダムデータセット:
category <- letters[1:10]
freq <- runif(10, 0.1, 0.9)
df <- data.frame(category, freq)
category freq
1 a 0.3631365
2 b 0.7180477
3 c 0.2827611
4 d 0.8640651
5 e 0.7192371
6 f 0.5747942
7 g 0.3487860
8 h 0.4138134
9 i 0.3984429
10 j 0.1522889
あなたはmapplyと列全体に関数を適用することができます:例えば、リターンを
freqCount <- function(freq, sampleSize){
result <- freq * sampleSize
return(result)
}
round(mapply(freqCount, df$freq, sampleSize = nrow(df)))
う;
[1] 4 7 3 9 7 6 3 4 4 2
あなたは、各対立遺伝子が持っているであろう(あなたのコメントから)1242890と等しい総数それを取得するための唯一の方法であるため、各周波数カウントは、正確に1に丸められた場合には、単にこれが意味するであろうを得ることはありませんちょうど一回見られました。大きなサンプルサイズを乗算していることを考慮すると、非常に小さい周波数でもかなり大きくなります。サンプルデータセットの最小頻度でさえもround(1242890*0.00033) = 410
となります。データセット内のすべての頻度が0.00001になっても、結果はround(1242890*0.00001)*1242890 = 14914680
となります。
これはすべて言われていますが、なぜあなたは丸めていますか?これは、あなたが少し正確を失うことを意味します。私は確かに統計の専門家ではありませんが、不正確なデータに関する統計的なテストを実行するのは...変です。私が知る限り、chisq.test()
とfisher.test()
をRで実行するには、何も丸める必要はありません。しかし、これはまったく別の話題かもしれませんし、これに関する私の知識は限られています。
出典
2016-03-18 22:09:37
BrJ
この例ではどのような出力が得られますか? – mtoto
周波数と1242890の積を丸めたいと思っていますか? Rでは、 'round(1242890 * Frequency)'は整数を与えます。既に試した方法で何が問題になっていますか?あなたは問題の具体例を挙げることができますか? – MrFlick
私はExcelでこれを試しましたが、丸め後の問題は総数が1242890に決して等しくないことを意味します。周波数値が1に加算されないのでおそらくOKです。総数を考慮して丸めを改善する良い方法があるかもしれないと思った –