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

SAS Base Discussion :

Récupérer code postal dans une adresse


Sujet :

SAS Base

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Janvier 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2012
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Récupérer code postal dans une adresse
    Bonjour à tous,
    j'essaye de récupérer un code postal dans une variable qui contient une adresse entière...
    Par exemple :
    "5, rue de la Butte aux Cailles 75013 Paris", je ne veux que le CP.
    Comme toutes les adresses sont différentes, je n'ai pas réussi avec le substr... j'ai essayé avec scan, mais je n'ai pas réussi non plus. Apparemment le mieux ce serait de faire une regex, mais je suis un peu perdu...
    Si je comprends bien, il me faudrait un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    REGEX=PRXPARSE('/([0-9]{5}\s?');
    /** IDENTIFIE UN MOTIF DE TROIS SUIVIS EVENTUELLEMENT D UN ESPACE     **/
    END;
    ça vous semble correct ? Mais comment ça s'insère dans le programme ? C'est à mettre dans une étape data je suppose, mais comment ?

    Merci pour votre aide !

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur Pilotage
    Inscrit en
    Avril 2009
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur Pilotage
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 405
    Points : 1 063
    Points
    1 063
    Par défaut
    Bonjour,

    D'après ce lien , page 4 et 5 (+ explications )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    data _null_;
    retain prxid;
    if _N_=1 then
    do;
    prx="/(\d{5})[]*(.+)/";1
    prxid=prxparse(prx);2
    If missing(prxid) Then GoTo 3
    do;
    putlog "ERREUR:Expression"
    Régulière Invalide :"prx;
    stop;
    end;
    end;
    length adresse $255.cp $5.ville $32.;
    input;
    adresse=_infile_;
    if ^prxmatch(prxid,adresse)then 4
    putlog "AVERTISSEMENT:pas de localité valide"
    dans l 'adresse :"adresse;
    else do;
    call prxposn(prxid,1,position,taille);5
    cp=substr(adresse,position,taille);
    call prxposn(prxid,2,position,taille);6
    ville=substr(adresse,position,taille);
    putlog "NOTE:Code postal :"cp;
    putlog "NOTE:Ville :"ville;
    end;
    datalines;
    7 rue du château 11000 CARCASSONNE
    12 bis rue de la plage 34000 MONTPELLIER
    9 Avenue du canal 31000TOULOUSE
    14,rue de l'église 77380 COMBS LA VILLE
    ;
    run;
    I always thought that the person who specialized in using just SAS PROCS should
    be known as the SAS Proctologist.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Janvier 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2012
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Super, merci beaucoup.
    Je comprends à peu près comment l'expression fonctionne.

    Mais ce que je n'arrive pas à faire, c'est lui dire d'appliquer cette expression à la variable "adresses" de ma table.
    Je ne comprends pas bien, dans ce type de syntaxe à quel moment il faut lui dire. Dans l'exemple, c'est simple, on lui rajoute les données à la fin, dans le datalines. Mais comment faire quand il s'agit d'aller chercher une variable dans une table.
    J'ai fait plein d'essais avec infile et datalines, mais je n'y arrive pas

  4. #4
    Membre habitué
    Homme Profil pro
    sas help desk et installateur
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : sas help desk et installateur
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Points : 143
    Points
    143
    Par défaut en supposant une table existante
    C'est pourtant simple
    il suffit de placer l'instruction set

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    DATA b;
    retain prxid;drop position taille prxid prx;
    IF _N_=1 then do;
      prx="/(\d{5})[ ]*(.+)/";
      prxid=prxparse(prx);
      IF missing(prxid) Then  do;
        putlog "ERREUR:Expression  Régulière Invalide :" prx;
        stop;
        end;
    end;
    length adresse $255. cp $5. ville $32.;
    set a;
    if ^prxmatch(prxid,adresse)then 
          putlog "AVERTISSEMENT:pas de localité valide dans l 'adresse :" adresse;
    else do;
       call prxposn(prxid,1,position,taille);
       cp=substr(adresse,position,taille);
       call prxposn(prxid,2,position,taille);
       ville=substr(adresse,position,taille);
    end;
    run;

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Janvier 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2012
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    ben oui, j'ai essayé de mettre le set.
    En fait ce que j'avais oublié, c'est de modifier la variable adresse !

    Merci beaucoup pour votre aide !!!

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

Discussions similaires

  1. Ressortir un code postal d'une adresse
    Par cryosore dans le forum Développement
    Réponses: 2
    Dernier message: 20/07/2010, 11h48
  2. Récupérer code erreur dans une log
    Par clluciole dans le forum Développement
    Réponses: 1
    Dernier message: 03/08/2009, 15h20
  3. Aide pour récupérer code source dans une variable
    Par leumas dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/09/2008, 14h03
  4. récupérer un code postal dans une adresse
    Par knice dans le forum Langage
    Réponses: 4
    Dernier message: 30/07/2008, 16h47
  5. [JNI]récupérer un code c dans une bibliotheque dll
    Par elalia dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 29/10/2005, 13h08

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