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

Macro Discussion :

Call symput visualisation de la macro variable générée


Sujet :

Macro

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 108
    Points
    108
    Par défaut Call symput visualisation de la macro variable générée
    Bonjour,
    j'aimerais visualiser le contenu de la macro variable générée par le call symput suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call symput (compress ("oldname"||put(_N_,4.)),strip(anc_nom));
    Comment puis je faire?
    D'avance merci

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 71
    Points : 67
    Points
    67
    Par défaut
    Bonjour,

    Cette instruction crée une macro-variable pour chacune des observations de ton dataset.

    Tu peux afficher les macro variables de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    %put &oldname1;
    %put &oldname2;
    ...
    Tu peux aussi rajouter ce code afin de connaître le nombre d'observation de ton dataset.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call symput ('nbr',put(_N_,8.));

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en SAS/ Statisticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 483
    Points : 1 552
    Points
    1 552
    Par défaut
    Je pense qu'il faudrait tirer le nombre _N_ vers la gauche à l'aide de la fonction lLEFT avant de le stocker dans la macro variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    call symputx ( "oldname"||left(put(_N_, 4.)), strip(anc_nom) );
    %put &oldname1 ;

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 108
    Points
    108
    Par défaut
    merci à vous 2.
    En faite cela marche sans utiliser le left grâce au compress peut être, mais effectivement cela paraitrait logique de l'utiliser à mon avis aussi et ainsi d'alléger l'écriture
    En effet ce qui me troublait était l'utilisation de la concaténation ||put(_N_,4.) pour former une macro variable spécifique pour chaque observation.

    Maintenant j'ai une 2eme question .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data base_finale ; set base_initiale (rename=(%do i=1 %to &NB; &&oldname&i..=&&newname&i..%end;))
    Pourquoi faut il mettre les 2 & successifs pour que cela marche?
    d'autre part je me suis aperçu que les 2. a priori ne servent à rien. Quel est éventuellement leur usage?

    Merci encore

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 71
    Points : 67
    Points
    67
    Par défaut
    Il faut mettre "&&" pour résoudre la macro variable i en premier puis résoudre la macro variable oldname entièrement.

    Exemple des différences qu'on peut obtenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    %let i=1;
    %let var1=age;
    %let var=poids;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    %put &i;
    1
    %put &&var&i;
    age
    %put &var&i;
    poids1
    Les points ne sont en effet pas nécessaires dans ce cas, mais lorsque tu travailles sur des macros qui concernent des librairies avec des datasets rattachés, ils sont nécessaires.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    %let lib=sashelp;
    data test;
    	set &lib..class;
    run;
    Je te conseille d'étudier ce document afin de comprendre les bases des macros SAS : http://math.agrocampus-ouest.fr/info...SAS_macros.pdf

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/06/2014, 09h37
  2. call symput et macro-variable
    Par fafabzh6 dans le forum Macro
    Réponses: 2
    Dernier message: 11/12/2009, 10h15
  3. [Macro] la macro call symput
    Par r_dani dans le forum Macro
    Réponses: 2
    Dernier message: 17/10/2008, 15h03
  4. Réponses: 4
    Dernier message: 10/07/2008, 15h51
  5. macro avec call symput
    Par kabstat dans le forum Macro
    Réponses: 14
    Dernier message: 04/07/2008, 23h08

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