Fonction pour échantillonner

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Boris Milognon
Messages : 3
Enregistré le : 22 Oct 2017, 10:55

Fonction pour échantillonner

Messagepar Boris Milognon » 27 Oct 2017, 07:24

Bonjour à tous.
Je cherche à échantillonner respectivement 30, 40, 50, 60, 70, 80 et 90% d'une base de donnée. J'ai pu le faire avec ces lignes de code que voici.
index1 <- sample(1:nrow(rdata),round(0.30*nrow(rdata)))
index2 <- sample(1:nrow(rdata),round(0.40*nrow(rdata)))
index3 <- sample(1:nrow(rdata),round(0.50*nrow(rdata)))
index4 <- sample(1:nrow(rdata),round(0.60*nrow(rdata)))
index5 <- sample(1:nrow(rdata),round(0.70*nrow(rdata)))
index6 <- sample(1:nrow(rdata),round(0.80*nrow(rdata)))
index7 <- sample(1:nrow(rdata),round(0.90*nrow(rdata)))
Mon problème est le suivant. Je veux écrire une fonction qui pourra m'aider à obtenir le même résultats.
Merci de m'aider

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Fonction pour échantillonner

Messagepar Pierre-Yves Berrard » 27 Oct 2017, 08:00

Bonjour,

Une fonction qui renvoie une liste des "index" :

Code : Tout sélectionner

f <- function(rdata, pct = 3:9 / 10) {
  n <- nrow(rdata)
  lapply(pct, function(p) sample(n, round(p * n)))
}

Utilisation :

Code : Tout sélectionner

f(iris)
f(iris, c(.15, 1/3))

(on peut aussi regarder du côté de la fonction sample_frac du package dplyr)
PY

Boris Milognon
Messages : 3
Enregistré le : 22 Oct 2017, 10:55

Re: Fonction pour échantillonner

Messagepar Boris Milognon » 30 Oct 2017, 07:34

Merci la réponse Mr Pierre-Yves Berrard.
J'ai un préoccupation à propos de la fonction . Est ce qu'elle renvoie automatiquement la liste des index? ou dois-je les appeler

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Fonction pour échantillonner

Messagepar Pierre-Yves Berrard » 30 Oct 2017, 21:53

Vous pouvez affecter le résultat de la fonction à un objet puis vous en servir comme suit :

Code : Tout sélectionner

ma_liste <- f(iris)
ma_liste[[1]]
ma_liste[[5]]
PY

Boris Milognon
Messages : 3
Enregistré le : 22 Oct 2017, 10:55

Re: Fonction pour échantillonner

Messagepar Boris Milognon » 08 Nov 2017, 07:45

Infiniment merci Mr Pierre-Yves Berrard pour votre aide


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité