2016-09-05 1 views
0

J'ai un data.frame et j'ai besoin de créer 1000 échantillons aléatoires, chacun contenant 30 observations.Créer 1000 échantillons de 30 observations à partir de data.frame

Voici un exemple de mon 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) 

La colonne d'où doit prendre les échantillons est df$Letter.

Une suggestion?

+1

Vous pouvez utiliser 'sample' avec' replicate' pour créer 100 échantillons de longueur 30 avec remplacement, par exemple, 'replicate (100, exemple (df $ Letter, 30, replace = TRUE))'. Vous n'avez pas besoin du paquet 'boot'. – shayaa

+1

Les rééchantillonnages bootstrap ont la même taille que l'échantillon original. Puisque vous voulez avoir des rééchantillonnages plus grands que l'échantillon original, vous ne faites pas de bootstrap et vous ne pouvez donc pas utiliser la fonction 'boot'. – Roland

Répondre

0

Vous pouvez utiliser sample avec replicate pour créer 100 échantillons de longueur 30 avec remplacement. Vous n'avez pas besoin du paquet de démarrage. Après votre réponse, vous pouvez simplement utiliser simplify = FALSE pour empêcher la coercition dans un tableau.

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

Le résultat sera une liste.

0

grâce à @shayaa, voici la solution de ma question:

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

pour plus de commodité, je converti la matrice dans une liste:

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