2016-08-25 33 views
0

我有數據的兩個表 - 第一個是一個完整的數據集重複(密度)的一種因素(生境):如何循環引導函數並將結果添加到表中?

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

第二種是概括版本,每含有平均密度棲息地一行。

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

我有下面的代碼獲取自舉置信區間(表1中的數據使用)......

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 

我有上百個運行做(大量的很多物種的棲息地),所以我喜歡如果有急診室的方式來自動完成這個 - 即

  1. 使用for循環或東西
  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

相關問題