2016-08-25 13 views
0

Iは、データの2つのテーブルを持っている - 第一の要因(生息環境)のための複製(密度)との完全なデータセットである:メジアン密度を含む生息地ごとに1行で、ブートストラップ機能をループして結果をテーブルに追加するにはどうすればよいですか?

Table1 <- data.frame(
Habitat = sample(c("Woodland", "Grassland"), 10, replace = TRUE), 
Density = sample(1:10) 
) 

秒である要約バージョン。私は(表1のデータを使用して)ブートストラップ信頼区間を取得するために以下のコードを持っている

library(dplyr) 
Table2 <-ddply(Table1, "Habitat",summarise, Median = median(Density)) 

......

fun.boot <- function(x, i) {median(x[i])} 
Wood.boot <- boot(data = Table1$Density[Table1$Habitat=="Woodland"],statistic = fun.boot, R = 10000) 
boot.ci(boot.out = Wood.boot, conf = 0.95, type = c("perc")) 

私が対応するには、このデータを入れたいです(生息地=森林)表2の行が、唯一の)upperCIについて、次の(それを用いた手でそれを行う方法を見つけ出すことができます.....

Table2$LowerCI <- rep("NA",nrow(Table2)) 
Table2$LowerCI[Table2$Habitat == "Woodland"] <- 2 

私が行うには実行に数百(たくさんあります種の多くのための生息地)、私は夢中になるこれを自動化する方法がある場合、ER - すなわち

  1. ループまたは何か
  2. ために使用して、各生息地の信頼区間を生成し、次いで表2にそれを読みます?結果について

答えて

0

宣言空間(注:NAを引用符で囲む必要はありません):

Table2$LowerCI <- rep(NA, nrow(Table2)) 
Table2$UpperCI <- rep(NA, nrow(Table2)) 

今、あなたは、適切な列に結果をあなたの生息地をループして保存することができます

for(hab in Table2$Habitat) 
{ 
    hab.boot <- boot(data = Table1$Density[Table1$Habitat==hab],statistic = fun.boot, R = 10000) 
    hab.ci <- boot.ci(boot.out = hab.boot, conf = 0.95, type = c("perc")) 
    Table2$LowerCI[Table2$Habitat==hab] <- hab.ci$percent[4] 
    Table2$UpperCI[Table2$Habitat==hab] <- hab.ci$percent[5] 
} 
+0

完璧、ありがとうございます!私はforループを得ていなかったが、最後のビットで少し困惑した! – Lau99

関連する問題