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énation de plusieurs colonnes en fonction d'un paramètre système


Sujet :

SAS Base

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 97
    Points : 64
    Points
    64
    Par défaut Concaténation de plusieurs colonnes en fonction d'un paramètre système
    Bonjour,

    J'essaie d'automatiser la concaténation de plusieurs colonnes dans une macro. Suite à une proc transpose, je me retrouve avec une table qui a plusieurs colonnes par enregistrement que je souhaite rassembler en une seule variable.

    Mon étape data est alors la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    data table4;
    	set table3;
    	var=strip(col1)!!strip(col2)!!strip(col3)!!strip(col4)!!strip(col5);
    	drop _name_ col1-col5;
    run;
    Le problème est que je dois appliquer cette étape sur de nombreuses tables et le nombre de colonne peut varier (de 1 à quelques dizaines) ; si j'effectue une étape data "large" (en concaténant 100 colonnes par exemple pour être sûr de ne rien louper), il me colle à la fin de ma variable autant de "." que de colonnes qui "n'existent pas".

    J'ai pu récupérer le nombre de colonnes grâce à l'instruction suivante (effectuée sur une autre table temporaire avant le proc transpose) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data _null_; 
    	set a; 
    	call symput("nbcol",trim(left(put(nb,2.)))); 
    run;
    Existe-t-il une solution pour concaténer mes colonnes n°1 à &nbcol (calculé ci-dessus) grâce à un paramètre macro ?

  2. #2
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Hello,

    une piste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var= cats (of col :);
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 97
    Points : 64
    Points
    64
    Par défaut
    Impeccable !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data table4 (drop=col: id _name_);
    	set table3;
    	var=cats(of col :);
    run;
    Merci Sam

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

Discussions similaires

  1. Afficher plusieurs colonnes avec fonction MAX
    Par koolshenntm dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/07/2014, 15h28
  2. [Débutant] créer plusieurs colonnes avec fonction a:step:c
    Par atomap dans le forum MATLAB
    Réponses: 5
    Dernier message: 25/06/2014, 10h48
  3. Concaténation de plusieurs colonnes
    Par sniper75 dans le forum SAS Base
    Réponses: 11
    Dernier message: 19/11/2013, 12h47
  4. Réponses: 2
    Dernier message: 14/09/2011, 16h17
  5. Réponses: 2
    Dernier message: 19/02/2010, 14h14

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