2016-09-05 7 views
0

У меня есть data.frame, и мне нужно создать 1000 случайных выборок, каждый из которых содержит 30 наблюдений.Создайте 1000 выборок из 30 наблюдений из data.frame

Вот пример моего data.frame:

df = read.table(text = 'ID Letter 
1 L 
2 R 
3 T 
4 U 
5 I 
6 K 
7 Y 
8 Q 
9 A 
10 R', header = TRUE) 

Колонна из которой образцы должны быть приняты в df$Letter.

Любое предложение?

+1

Вы можете использовать 'sample' вместе с' replicate', чтобы создать 100 образцов длиной 30 с заменой, например, 'replicate (100, sample (df $ Letter, 30, replace = TRUE))'. Вам не нужен пакет 'boot'. – shayaa

+1

Резерваторы Bootstrap имеют тот же размер, что и исходный образец. Поскольку вы хотите, чтобы образцы были больше, чем исходный образец, вы не выполняете загрузку и, следовательно, не можете использовать функцию 'boot'. – Roland

ответ

0

Вы можете использовать sample вместе с replicate создать 100 образцы длиной 30 с заменой. Вам не нужен пакет загрузки. После вашего ответа вы можете просто использовать simplify = FALSE, чтобы предотвратить принуждение к массиву.

replicate(100,sample(df$Letter, 30, replace =TRUE), simplify = FALSE) 

Результатом будет список.

0

благодаря @shayaa, здесь решение моего вопроса:

samples = replicate(1000,sample(df$Letter, 30, replace =TRUE)) #a matrix has been created 

для удобства я преобразовал матрицу в списке:

samples_list = split(samples, rep(1:ncol(samples), each = nrow(samples)))