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 :

Concaténer une chaine


Sujet :

SAS Base

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Décembre 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2014
    Messages : 84
    Points : 74
    Points
    74
    Par défaut Concaténer une chaine
    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
    data test;
    input text $22.;
    cards;
    de machin1 machin 2   
    machin3 de la machin  
    des machin4 de machin5
    ;
    run;
     
    data test2 (drop=i);
    set test;
    length text2 $100;
    do i= countw(text) to 1 by -1;
    	if i = countw(text) then text2 = scan(text,i);
    	else if length(scan(text,i)) le 4 then text2 = catt(scan(text,i),text2);
    	else text2 = catx(' ',scan(text,i),text2);
    end;
    run;
    Je cherche à concaténer les chaines de "nbr de position <=4" avec la chaine suivante.
    Mon problème c'est que quelque fois ma chaine contient un tiret (-) que je dois garder, le bout du code ci-dessus me le supprime et j'ai du mal à trouver la solution.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut
    salut,

    le tiret fait parti des délimiteurs de mots par défaut de scan, pour qu'un tiret soit considéré comme une lettre, ou plutôt que seul les espaces soit considérés comme des délimiteurs de mots dans scan (comme dans countw d'ailleurs, en effet pour que les algo soient cohérents il faut bien entendu que les délimiteurs de scan soient les même que ceux de scan) il te faut le préciser.

    Bon courage

  3. #3
    Membre régulier
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Décembre 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2014
    Messages : 84
    Points : 74
    Points
    74
    Par défaut
    Mais comment on peut le préciser dans ce code ?

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Dataminer
    Inscrit en
    Septembre 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Dataminer
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 29
    Points : 38
    Points
    38
    Par défaut
    Dans la fonction scan comme dans la fonction countw, tu peux spécifier les délimiteurs que tu souhaites.

    Pour la fonction scan tu dois spécifier la liste en 3ème position :
    http://support.sas.com/documentation...a000214639.htm

    Et pour la fonction countw en deuxième position :
    http://support.sas.com/documentation...a002977495.htm

    Donc, si tu veux considérer uniquement l'espace comme délimiteur, tu dois écrire un code du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Variable_crée = scan (Variable_utilisée, placement du mot, ' ');

  5. #5
    Membre régulier
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Décembre 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2014
    Messages : 84
    Points : 74
    Points
    74
    Par défaut
    Bonjour ,
    merci pour vos réponses.J'ai contourné le problème.
    J'ai remplacé le tiret par ® .et puis avec un tranwrd j'ai remet le tiret.

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

Discussions similaires

  1. Scanner et concaténer une chaine de caractère
    Par belo75 dans le forum SAS Base
    Réponses: 2
    Dernier message: 28/09/2016, 10h25
  2. Concaténer une chaine avec des antislashs
    Par Delack dans le forum Langage
    Réponses: 2
    Dernier message: 27/02/2010, 14h35
  3. Concaténer une chaine à un octet nul ?
    Par Morrigan dans le forum Débuter
    Réponses: 12
    Dernier message: 12/12/2008, 14h06
  4. Concaténer une chaine et un nombre pour former un nom de variable ?
    Par debie1108 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/04/2007, 07h38
  5. Comment concaténer une chaine de caractères avec un espace ?
    Par blanchonvincent dans le forum MATLAB
    Réponses: 6
    Dernier message: 07/04/2007, 21h53

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