IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Tirage sur dataframe avec identifiant unique


Sujet :

R

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 173
    Points : 67
    Points
    67
    Par défaut Tirage sur dataframe avec identifiant unique
    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.

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 208
    Points : 461
    Points
    461
    Par défaut
    Bonjour,

    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))
                                       }
    )
    t contient autant de numéros de lignes que colonne 1 a de modalités.
    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?

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 173
    Points : 67
    Points
    67
    Par défaut
    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

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 208
    Points : 461
    Points
    461
    Par défaut
    Citation Envoyé par Stepsbysteps Voir le message
    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.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 173
    Points : 67
    Points
    67
    Par défaut
    Ok super merci et pour récupérer ma dataframe?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    resultat=as.numeric(names(t))
    res=Dataset[Dataset$col1 %in% resultat,]
    à quelquechose près? ça ne marche pas ca

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 208
    Points : 461
    Points
    461
    Par défaut
    Citation Envoyé par Stepsbysteps Voir le message
    Ok super merci et pour récupérer ma dataframe?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    resultat=as.numeric(names(t))
    res=Dataset[Dataset$col1 %in% resultat,]
    à quelquechose près? ça ne marche pas ca
    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
    2
    resultat=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.

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 173
    Points : 67
    Points
    67
    Par défaut
    Super merci, oui tapply je n'ai jamais utilisé avant.

    Vous êtes vraiment calé ! Vous travaillez dans quoi?

    Encore merci pour tout.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/08/2014, 09h22
  2. Réponses: 0
    Dernier message: 13/08/2014, 09h05
  3. [2008R2] Problème d'insertion sur table avec une unique colonne identity
    Par Kropernic dans le forum Développement
    Réponses: 12
    Dernier message: 04/10/2013, 08h16
  4. [MySQL] Gérer un PDF avec identifiant unique
    Par tomguiss dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/03/2010, 12h21
  5. Réponses: 1
    Dernier message: 15/05/2008, 20h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo