研究と実験から得られた値で構成されるデータセットがあります。実験はスタディ内にネストされています。各研究で 1 つの実験のみが表されるように、データセットをサブサンプリングしたいと考えています。この手順を 10,000 回繰り返し、毎回 1 つの実験をランダムに描画してから、値の要約統計を計算します。データセットの例を次に示します。
df=data.frame(study=c(1,1,2,2,2,3,4,4),expt=c(1,2,1,2,3,1,1,2),value=runif(8))
上記を行うために次の関数を書きましたが、永遠にかかります。このコードを合理化するための提案はありますか? ありがとう!
subsample=function(x,A) {
subsample.list=sapply(1:A,function(m) {
idx=ddply(x,c("study"),function(i) sample(1:nrow(i),1)) #Sample one experiment from each study
x[paste(x$study,x$expt,sep="-") %in% paste(idx$study,idx$V1,sep="-"),"value"] } ) #Match the study-experiment combinations and retrieve values
means.list=ldply(subsample.list,mean) #Calculate the mean of 'values' for each iteration
c(quantile(means.list$V1,0.025),mean(means.list$V1),upper=quantile(means.list$V1,0.975)) } #Calculate overall means and 95% CIs