R цикл для выполнения того же кода - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь понять, как повторять один и тот же код 30 раз, не вводя каждый из них за раз ... любая помощь будет высоко оценена.

SRS_1 <- sample(1:nrow(MyData_points), size=.10*nrow(MyData_points))

data_sample_1 <- MyData_points[SRS_1,]

fpc.srs <- rep(6399875, 639987)

design_SRS_1 <- svydesign(id=~1, strata=NULL, data=data_sample_1, fpc=fpc.srs)

ONStotal_SRS1 <- svytotal(~data_sample_1$V4, design=design_SRS_1)

ONSmean_SRS1 <- svymean(~data_sample_1$V4, design=design_SRS_1)

CI_SRS_1 <- confint(svytotal(~data_sample_1$V4, design=design_SRS_1))

Первый код вычисляет простую случайную выборку с вероятностью 0,10 из данных. Второй получает образец из данных. В-третьих, вычисляет fpc, который составляет 10% от общего количества точек данных. Теперь, чтобы оценить население, мне нужно сделать образец выборки без замены, включая fpc. Затем для последних трех кодов я рассчитываю оценку популяции, среднее значение и доверительный интервал на основе этой выборки. Что изменится, так это то, что я должен повторить 30 разных простых случайных выборок из данных. Следовательно, полученные оценки, среднее значение и доверительные интервалы будут получены из 30 различных выборок. Они могут быть близки, но не равны

Как я могу улучшить этот код, чтобы я мог запускать его по 30 раз каждый и иметь возможность печатать таблицу с (ONStotal_SRS1, ONSmean_SRS1,CI_SRS_1)?

1 Ответ

0 голосов
/ 02 мая 2018

Обычно я использовал бы либо rbindlist из пакета data.table, либо bind_rows из dplyr в сочетании с lapply, чтобы построить таблицу за раз, а затем связать строки вместе. Вот пример использования bind_rows с набором данных mtcars:

library(dplyr)

combined_data <- bind_rows(lapply(1:30, function(...) {
  # Take a sample
  SRS_1 <- sample(1:nrow(mtcars), size = .10 * nrow(mtcars))
  data_sample_1 <- mtcars[SRS_1, ]

  # Compute some things from the sample
  m_disp <- mean(data_sample_1$disp)
  m_hp <- mean(data_sample_1$hp)

  # Make a one row data.frame that will be returned by the function
  data.frame(m_disp, m_hp)
}))

Что дает это data.frame:

> str(combined_data)
'data.frame':   30 obs. of  2 variables:
$ m_disp: num  235 272 410 115 249 ...
$ m_hp  : num  147 159 195 113 154 ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...