Я пытаюсь случайным образом выбрать data.table
, используя группы.Размер выборки каждой группы будет вычислен путем умножения частоты на Sample_Size
, которое является ожидаемым числом строк в выходных данных data.table
.
Я исследовал эту тему на SO.Похоже, что похожие потоки ( Необходимость случайной выборки набора данных с несколькими группами, каждая с несколькими факторами и , случайная выборка на основе групп ) приняли равномерное распределение для весов, что неработа для меня.
Вот тестовые данные:
InputDT <- data.table::data.table ("Country"=c(rep("A",20),rep("B",10),rep("C",5),rep("D",2)), "ID"=c(1:20,101:110,201:205,301:302))
Цель состоит в том, чтобы выбрать идентификаторы по стране.
Вот частота, которую мы хотим:
CountryFreq <-
data.table::data.table("Country"=unique(InputDT$Country), "Freq"=c(4/10,2/10,2/10,2/10))
Вот количество строк в выводе data.table
:
Sample_Size <- 10
Как правило, давайте предположим, что Sample_Size < nrows(InputDT)
Вот пример выходных данных, созданных вручную:
OutputDT <- structure(list(Country = c("A", "A", "A", "A", "B", "B", "C",
"C", "D", "D"), ID = c(1, 5, 7, 3, 102, 109, 203, 204, 301, 302
)), .Names = c("Country", "ID"), row.names = c(NA, 10L), class = "data.frame")
Вот тест, чтобы проверить, нужны ли частоты при необходимости:
Hmisc::describe(OutputDT$Country)
OutputDT$Country
n missing distinct
10 0 4
Value A B C D
Frequency 4 2 2 2
Proportion 0.4 0.2 0.2 0.2
Может кто-нибудь помочь мне?Я провел почти один день, пытаясь изучить сэмплирование в R, а затем настроить его в соответствии со своими потребностями.Буду признателен за любую помощь.