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

  1. #1
    Futur Membre du Club
    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 éprouvé
    Séparer l'adresse, le code postal et la ville
    Bonjour,

    N'oubliez pas d'indiquer vos sources. Voici l'origine de votre programme : [URL="https://www.developpez.net/forums/d1235646/logiciels/solutions-d-entreprise/business-intelligence/sas/sas-base/recuperer-code-postal-adresse]lien[/URL]. Vous pouvez isoler le code postal + la ville : [CODE]call prxposn(prxid,0,position,taille); cp_ville=substr(adresse,position,taille);[/CODE] ce qui permet ensuite d'isoler la rue : [CODE]rue=substr(adresse,1,length(adresse)-length(cp_ville));[/CODE] En reprenant l'exemple du message original : [CODE]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;[/CODE] Cordialement,

  3. #3
    Futur Membre du Club
    C'est super ça fonctionne, merci beaucoup !

###raw>template_hook.ano_emploi###