谢谢你的时间!
我的数据框很简单。两列:第一列具有基因型(1-39),第二列具有特征值(数字,连续)。我想选择8种基因型并计算相关性状值的平均值和stdev。
最后,我想对8个基因型进行10,000次抽样,对于每个样本,我希望得到相关特征值的stdev和均值。理想情况下,这将是一个矩阵,其中每行代表一个样本,每个基因型有8列,stdev有2个最终列,与这些基因型相关的特征值的平均值。这也可能是另一种方式。
如何从数据框中的两个不同列进行采样,以便在新样本中显示这两个值?即基因型和特征值与平均值和stdev计算
如上所述,如何将此样本放入矩阵中?
您如何重复此过程10,000次?
再次感谢!
答案 0 :(得分:5)
这将返回8个特征的随机样本中具有基因型的所有行的单个样本:
dat[ dat$genotype %in% sample(1:39, 8), ]
replicate
功能旨在重复随机过程。从这样的2种基因型样本中重复3次获得“性状”的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