2016-08-25 53 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

相关问题