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 :

homogénisation de valeurs de variables en texte


Sujet :

R

  1. #1
    Membre du Club
    Homme Profil pro
    chargé d'études
    Inscrit en
    Janvier 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chargé d'études

    Informations forums :
    Inscription : Janvier 2015
    Messages : 93
    Points : 57
    Points
    57
    Par défaut homogénisation de valeurs de variables en texte
    bonjour, je débute avec R.
    je travaille sur un fichier INSEE.

    ci-dessous un extrait de mon tableau nommé T
    row.names coma liba comb libb n
    2015 01053 Bourg-en-Bresse 13210 Marseille 10e Arrondissement 1.0094811
    2016 01053 Bourg-en-Bresse 13216 Marseille 16e Arrondissement 3.6697433

    je voudrai arriver à ce tableau
    2015 01053 Bourg-en-Bresse 13055 Marseille 1.0094811
    2016 01053 Bourg-en-Bresse 13055 Marseille 3.6697433

    j'imagine 2 étapes : l'une où je supprime les "xxe Arrondissement" et l'autre où je sélectionne le champ 'Marseille' pour modifier le code insee correspondant.

    Quelqu'un pourrait-il m'aider? merci

  2. #2
    Membre du Club
    Homme Profil pro
    chargé d'études
    Inscrit en
    Janvier 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chargé d'études

    Informations forums :
    Inscription : Janvier 2015
    Messages : 93
    Points : 57
    Points
    57
    Par défaut homogénisation de valeurs de variables en texte
    bonsoir

    j'ai essayé de supprimer la chaine "1er arrondissement" ... "16 arrondissement" de Marseille pour la variable libb (mon idée etant de recommencer pour Paris, Lyon et de faire pareil pour la variable liba.

    voici mon code (qui ne marche pas !!)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    paca$libb[paca$libb %in% c("Marseille 1er Arrondissement","Marseille 2e Arrondissement","Marseille 3e Arrondissement","Marseille 4e Arrondissement","Marseille 5e Arrondissement","Marseille 6e Arrondissement","Marseille 7e Arrondissement","Marseille 8e Arrondissement","Marseille 9e Arrondissement","Marseille 10e Arrondissement","Marseille 11e Arrondissement","Marseille 12e Arrondissement","Marseille 13e Arrondissement","Marseille 14e Arrondissement","Marseille 15e Arrondissement","Marseille 16e Arrondissement")] <-"Marseille"
    Voici le message d'erreur :
    Warning message:
    In `[<-.factor`(`*tmp*`, paca$libb %in% c("Marseille 1er Arrondissement", :
    invalid factor level, NA generated
    Quelqu'un pourrait m'aider ?
    Merci

  3. #3
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Bonjour,

    Commencez par convertir la variable libb en chaîne de caractères. Pour le moment, c'est un facteur et "Marseille" ne fait pas partie de ses niveaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    paca$libb <- as.character(paca$libb)
    Ensuite, vous pouvez essayer de remplacer le contenu...
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Janvier 2012
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 325
    Points : 888
    Points
    888
    Par défaut
    Avec une regex pas besoin de listes à rallonge.
    Comme un nom de commune est pas censée avoir des numéros, on peux par exemple ne garder que ce qu'il y a avant un numéro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sub("^(.+) [1-9].+$","\\1","Marseille 10e Arrondissement")

  5. #5
    Membre du Club
    Homme Profil pro
    chargé d'études
    Inscrit en
    Janvier 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chargé d'études

    Informations forums :
    Inscription : Janvier 2015
    Messages : 93
    Points : 57
    Points
    57
    Par défaut
    merci CED , cela a fonctionné du 1er coup !

    merci également THETA , je n'avais pas penser à cette approche. Par contre, après essai: la ligne donne "marseille" mais je ne sais pas comment l'utiliser...

    mon défi continue, j'essaie de mettre à jour les codes insee correspondants à mes nouveaux libellés Marseille, Lyon et Paris.
    paca$libb[which(paca$libb="Marseille"), paca$comb<-"13055" ce 1er test ne marche pas...

  6. #6
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Plutôt quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    paca$comb[paca$libb == "Marseille"] <- "13055"
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  7. #7
    Membre du Club
    Homme Profil pro
    chargé d'études
    Inscrit en
    Janvier 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chargé d'études

    Informations forums :
    Inscription : Janvier 2015
    Messages : 93
    Points : 57
    Points
    57
    Par défaut
    Merci encore CED. La commande est passée sans problème.

    J'ai rectifié les codes insee et les libellés des communes étrangères, puis j'ai agrégé les lignes multiples en sommant sur n (paca3<-aggregate(n~coma+liba+comb+libb, data=paca,sum) (ça peut servir à quelqu'un).
    Ensuite j'ai importé un fichier shape (commune métropole), puis à partir d'un code insee , j'ai tenté d'extraire les coordonnées x y correspondantes de la table commune métropole (je me suis inspiré pour tout ça de tutos trouvés sur la toile).
    Pour le moment je suis bloqué, car la table commune contient des arrondissements, ce qui me génère des cellules NA.
    Je vais régler le problème avec QGIS.... en modifiant le shape de commune.

    Dès que j'ai terminé, je reviens pour la suite du défi car ça s'annonce compliqué ...!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/11/2014, 20h43
  2. Réponses: 4
    Dernier message: 17/02/2012, 10h22
  3. [Debutant][Système]Récupérer la valeur des variables systeme
    Par cameleon2002 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 16/02/2007, 09h57
  4. valeur d'un champ text modifié par une variable en parametre
    Par klimero dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 21/04/2006, 10h39
  5. [DOS] variables et texte
    Par isidore dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 21/11/2003, 23h38

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