2016-08-25 5 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. генерировать доверительные интервалы для каждой среды обитания, используя для цикла или что-то
  2. затем прочитать его в таблице 2 ??

ответ

0

Declare пространство для результата (примечание: вам не нужно в кавычках 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