2016-11-01 4 views
0

У меня есть кадр данных из 200 тыс. Строк, 10 столбцов. (только для удобства чтения здесь всего 3)раскол данных данных содержит как минимум один коэффициент в обоих подмножествах

df=data.frame(A=rep(letters[1:20],10000),B=rep(letters[2:21],10000),C=rep(letters[3:22],10000)) 

Я пытаюсь разбить данные на два поднабора - обучение и тестирование.

s=sample(dim(df[1],.6*dim(df)[1]) 
training=df[s,] 
testing=df[-s,] 

Есть ли способ, чтобы взять образец из ДФА таким образом, что есть по крайней мере один фактор в каждом из полученных подмножеств? То есть, из столбца A-J, я хочу, по крайней мере, один экземпляр каждого из факторов как в наборах обучения, так и тестирования.

Я пробовал Random subset containing at least one instance of each factor, но не могу применить его к нескольким столбцам, в отличие от сингла, используемого в примере.

+0

Вы можете взглянуть на этот вопрос вчера: http://stackoverflow.com/questions/40353057/sampling-a-specific-age-distribution-from-a- dataset – Dave2e

+0

@ Dave2e, который используется для одной переменной, а не для 10, меня интересует расщепление – alex

ответ

0

Я думаю, что вы хотите сделать стратифицированную выборку. Есть несколько вариантов сделать это в R, например. strata в пакете sampling. Выезд this discussion.

0
s=createDataPartition(paste(df$A, df$B,df$C),p=.6,list=FALSE) 
training=df[s,] 
testing=df[-s,] 

работал