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 :

remplacer chaque valeur d'une colonne par un id unique (de 1 à n)


Sujet :

R

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    465
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 465
    Points : 287
    Points
    287
    Par défaut remplacer chaque valeur d'une colonne par un id unique (de 1 à n)
    Bonjour,

    J'ai une table dont une colonne prend des noms

    Un utilisateur souhaite que je confidentialise les valeurs de cette colonne en remplaçant chaque nom par un identifiant unique, par exemple un entier.

    Ainsi, de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    nom1
    nom1
    nom1
    nom2
    nom2
    ...
    je devrais avoir au final
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    1
    1
    1
    2
    2
    ...
    Comment accomplir cela?

    Merci!

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    465
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 465
    Points : 287
    Points
    287
    Par défaut
    J'ai une méthode qui me semble peu élégante pour le faire mais bon...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    noms<-unique(data$nom)
    seq<-seq(1,length(noms))
    df<-data.frame(NOM=noms,id=seq)
    merge<-merge(data,seq,by.x="nom",by.y="nom")
    Y a-t-il plus élégant?

    Aussi, je voulais savoir si lors de l'exécution de la fonction merge, on était obligés de spécifier les noms de colonnes lorsque ces dernières portent les mêmes noms dans les data frames?

    Merci!

  3. #3
    Membre habitué
    Inscrit en
    Mai 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 74
    Points : 164
    Points
    164
    Par défaut
    Salut
    Cette solution suppose que la variable nom est un factor (et pas de classe character), sinon tu peux faire avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    data$nom <- factor(data$nom)
    # ou data$nom <- as.factor(data$nom)
    Une fois cette étape franchis, tu peux essayer voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    noms<-unique(data$nom)
    n <- length(unique(data$nom))
    data$nom <- factor(data$nom, labels = 1:n)

  4. #4
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Bonjour,

    Citation Envoyé par dickoa Voir le message
    Salut
    Cette solution suppose que la variable nom est un factor (et pas de classe character), sinon tu peux faire avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    data$nom <- factor(data$nom)
    # ou data$nom <- as.factor(data$nom)
    ...
    C'est la bonne piste, mais on peut faire plus simple sur la suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data$anonyme <- as.numeric(data$nom)
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  5. #5
    Membre habitué
    Inscrit en
    Mai 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 74
    Points : 164
    Points
    164
    Par défaut
    J'avoue qu'elle est beaucoup plus élégante et simple......Duhhhhhh j'y ai pas pensé du tout !!!
    Si on faisait du R golf tu m'aurais mis à l'amende

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    465
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 465
    Points : 287
    Points
    287
    Par défaut
    Super!

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

Discussions similaires

  1. Remplacer valeur d'une colonne par une autre du même tableau
    Par chattam dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 25/06/2014, 13h20
  2. Réponses: 2
    Dernier message: 13/06/2014, 14h12
  3. Réponses: 4
    Dernier message: 04/05/2012, 17h23
  4. [XL-2007] [FORM] remplacer la valeur d'une cellule par une autre
    Par coldavires dans le forum Excel
    Réponses: 7
    Dernier message: 21/01/2010, 22h34
  5. Réponses: 2
    Dernier message: 18/06/2009, 15h09

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