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 :

Séparer l'adresse, le code postal et la ville


Sujet :

SAS Base

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 17
    Points : 14
    Points
    14
    Par défaut Séparer l'adresse, le code postal et la ville
    Bonjour à tous,
    je débute en SAS, j'ai une variable de type "1 route de paris 75000 Paris" que je cherche à découper en 3 parties. Sur ce forum j'ai trouvé un programme qui extrati la ville et le CP, mais je n'arrive pas à le modifier pour en extraire aussi le "1 route de paris".
    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
    DATA Table_sortie;
    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 Table_entree;
    if ^prxmatch(prxid,adresse_residence)then 
          putlog "AVERTISSEMENT:pas de localité valide dans l 'adresse :" adresse_residence;
    else do;
       call prxposn(prxid,1,position,taille);
       cp=substr(adresse_residence,position,taille);
       call prxposn(prxid,2,position,taille);
       ville=substr(adresse_residence,position,taille);
    end;
    run;
    Est-ce que l'un.e d'entre-vous aurait une idée ?
    Merci

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Séparer l'adresse, le code postal et la ville
    Bonjour,

    N'oubliez pas d'indiquer vos sources. Voici l'origine de votre programme : lien.

    Vous pouvez isoler le code postal + la ville :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    call prxposn(prxid,0,position,taille);
    cp_ville=substr(adresse,position,taille);
    ce qui permet ensuite d'isoler la rue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rue=substr(adresse,1,length(adresse)-length(cp_ville));
    En reprenant l'exemple du message original :

    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
    35
    36
    37
    data a;
      length adresse $255.;
      adresse = "7 rue du château 11000 CARCASSONNE"; output;
      adresse = "12 bis rue de la plage 34000 MONTPELLIER"; output;
      adresse = "9 Avenue du canal 31000 TOULOUSE"; output;
      adresse = "14,rue de l'église 77380COMBS LA VILLE"; output;
    ;
    run;
     
    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,0,position,taille);
        cp_ville=substr(adresse,position,taille);
        call prxposn(prxid,1,position,taille);
        cp=substr(adresse,position,taille);
        call prxposn(prxid,2,position,taille);
        ville=substr(adresse,position,taille);
      end;
    run;
     
    data b;
      set b;
      rue=substr(adresse,1,length(adresse)-length(cp_ville));
    run;

    Cordialement,

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    C'est super ça fonctionne, merci beaucoup !

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

Discussions similaires

  1. [AC-2003] Séparer champs adresse à partir code postal
    Par Nana35 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 17/09/2009, 14h53
  2. [AJAX] filter les code postal via des villes
    Par guillaume2vo dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 04/06/2008, 19h46
  3. Relation entre une adresse et la ville et le code postal
    Par fghjklm dans le forum Modélisation
    Réponses: 2
    Dernier message: 06/03/2008, 03h09
  4. Réponses: 4
    Dernier message: 01/10/2007, 10h07
  5. Réponses: 5
    Dernier message: 23/02/2006, 22h12

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