Bonjour,
J'ai une dataframe avec plusieurs numéros de dossiers dans la colonne 1, ces numéros se répétant plusieurs fois.
J'aimerais faire un tirage de n lignes ayant toutes un numéro différent.
Est-ce possible?
Merci d'avance.
Bonjour,
J'ai une dataframe avec plusieurs numéros de dossiers dans la colonne 1, ces numéros se répétant plusieurs fois.
J'aimerais faire un tirage de n lignes ayant toutes un numéro différent.
Est-ce possible?
Merci d'avance.
Bonjour,
t contient autant de numéros de lignes que colonne 1 a de modalités.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 t<-tapply(1:length(col1),col1, echant<-function(x){ if(length(x)==1){return(x)} return(sample(x,1)) } )
Si ton n est inférieur au nombre de modalités de colonne 1 tu peux refaire un echantillonage de taille n (sample(t,n)) sur ces numéros de ligne.
Maintenant ca c'est une solution possible, mais qui ne correspond peut être pas au tirage aléatoire que tu veux faire.
La on accorde le même poids à chaque modalité de colonne 1, peut être que tu veux donner plus de chance à une modalité plus représentée d'être selectionnée?
Super merci, il faut que je teste.
J'ai dû mal à comprendre où est le 3ème argument de tapply? et pourquoi il y a une fonction en plein milieu?
Edit : La fontion est le troisième argument? Et quelle est la variable de ma dataframe du coup?
Merci beaucoup
Tapply prend 3 arguments:
1-Le vecteur sur lequel travailler : 1:lenght(col1) qui correspond aux numéros de lignes de ton data frame
2-La variable sur laquelle segmenter : col1 qui est la variable de ton dataframe qui a les numeros de dossier
3-La fonction à appliquer aux marges
La fonction que j'utilise n'existe pas de base dans R donc je la définis moi même (function(x) {} ).
Pourquoi je n'utilise pas directement sample?
Parce que si tu as des numéros de dossier avec une seule ligne sample ne va pas marcher correctement, c'est pour ca que je réécris une fonction sample à ma sauce pour distinguer le cas ou on a des dossiers avec une seule ligne.
Ok super merci et pour récupérer ma dataframe?
à quelquechose près? ça ne marche pas ca
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 resultat=as.numeric(names(t)) res=Dataset[Dataset$col1 %in% resultat,]
Attention resultat doit contenir des numéros de ligne de ton data frame, pas des valeurs de col1 (ca n'aurait aucun sens puisqu'on veut justement une seule ligne par valeur de col1).
Il faut faire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2resultat=t res=Dataset[resultat,]
Edit: je te conseille de bien regarder l'aide sur ?tapply ca te sera toujours utile pour la suite si tu continues sur R.
Super merci, oui tapply je n'ai jamais utilisé avant.
Vous êtes vraiment calé ! Vous travaillez dans quoi?
Encore merci pour tout.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager