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 :

Utilisation de %nrstr, %quote, %str


Sujet :

Macro

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 23
    Points : 16
    Points
    16
    Par défaut Utilisation de %nrstr, %quote, %str
    Bonjour,

    Je souhaite écrire la chose suivante dans ma table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    boucle= %nrstr("%do v=1 %to &nbitem ; %if &v=&a %then %do; %let eta&i&j=eta&i&j ;")   ;
    Seulement, je veux que SAS remplace uniquement les valeurs de &a , &i et &j par les valeurs qu'elles prennent à chaque passage dans la boucle (ce code est intégré dans des boucles sur i, j et a) sans pour autant interpréter le reste.
    Tel qu'il est écrit ci-dessus, le code permet d'écrire ce que je veux mais les macro variable &j &i et &a ne prennent pas les valeurs qui leur sont attribuées par la présence du %nrstr.

    Comment parvenir à cela ? Je pense qu'il faut intégrer plusieurs fonctions %quote, %str et autre mais lesquelles et comment car je ne m'en sors pas ?

    Plusieurs post portent sur le même sujet mais aucun ne correspond vraiment à ce que je souhaite faire...

    Merci pour votre aide !

  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
    Bonjour,

    un peu HS ma réponse, mais je reste dubitatif sur l'intérêt de mettre du code SAS + code macro dans une table SAS, est-tu sûr d'avoir retenu la structure de programmation adéquat pour ton code ?

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    Il est possible que ça ne soit pas la solution la plus adéquate mais je n'ai pas trouvé mieux. Je passe par une table SAS pour écrire mon code car celui-ci dépend de plusieurs paramètres (qui sont des macro variables qui varient). Le code est donc différent en nombre de lignes selon ces paramètres d'où le passage par la table SAS.
    Pas sur que ça soit très clair ... mais ça n'est pas évident à expliquer !

    Pour exemple, (extrait du code)
    Le code correspond à ça si i=5 et j=4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    %let eta11=eta11 ; %let eta21=0 ;%let eta31=0 ;%let eta41=0 ;%let eta51=0;
    	%let eta12=eta12 ; %let eta22=0 ;%let eta32=0 ;%let eta42=0 ;%let eta52=0;
    	%let eta13=eta13 ; %let eta23=0 ;%let eta33=0 ;%let eta43=0 ;%let eta53=0;
    	%let eta14=eta14 ; %let eta24=0 ;%let eta34=0 ;%let eta44=0 ;%let eta54=0;
    et ressemble à ça si i=7 et j=5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    %let eta11=eta11 ; %let eta21=0 ;%let eta31=0 ;%let eta41=0 ;%let eta51=0;%let eta61=0;%let eta71=0;
    %let eta12=eta12 ; %let eta22=0 ;%let eta32=0 ;%let eta42=0 ;%let eta52=0;%let eta62=0;%let eta72=0;
    %let eta13=eta13 ; %let eta23=0 ;%let eta33=0 ;%let eta43=0 ;%let eta53=0;%let eta63=0;%let eta73=0;
    %let eta14=eta14 ; %let eta24=0 ;%let eta34=0 ;%let eta44=0 ;%let eta54=0;%let eta64=0; %let eta74=0;
    %let eta15=eta14 ; %let eta25=0 ;%let eta35=0 ;%let eta45=0 ;%let eta55=0;%let eta65=0; %let eta75=0
    i et j étant des paramètres d'une macro. Ils sont choisis au départ et le code doit s'adapter selon ce nombre.
    Voilà pour l'explication.

  4. #4
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Points : 2 329
    Points
    2 329
    Par défaut
    Tu peux utiliser un call symput pour créer des macro variables dans une étape data
    Consultez les FAQs et les anciens postes avant de poser vos questions. Merci

  5. #5
    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
    @Mamouthy : Toi seul peut savoir, cependant ne pas oublier que la façon de programmer dépend beaucoup de comment est structurée l'information. Réfléchir sur la structure de la programmation c'est aussi réfléchir sur la structure des données...
    D'expérience je sais que parfois on peut s'aventurer sur une programmation fastidieuse avec du code "changeant" ce qui semble être ton cas ici parce qu'on ne travaille pas sur la bonne structure "intuitive" des données, et changer "temporairement" la structure des données (par exemple en inversant le rôle des lignes et des colonnes, ou seulement en passant des individus en variable et/ou des variables en individus selon les cas) on peut aboutir à des codes beaucoup plus simples, rapides et compréhensibles.

    Bon courage.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    C'est bon je suis parvenue à faire ce que je souhaitais !
    Merci pour vos remarques, en espérant que j'arrive au bout de ce que je veux réaliser !

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/11/2014, 10h57
  2. Fonctions de quoting : str, nrquote, nbrquote
    Par L0007 dans le forum Macro
    Réponses: 8
    Dernier message: 12/11/2010, 14h20
  3. Utilisation du format $quote
    Par lhonolulu dans le forum SAS Base
    Réponses: 5
    Dernier message: 25/05/2009, 11h06
  4. Réponses: 3
    Dernier message: 27/11/2006, 18h00
  5. utilisation des quotes
    Par Henry9 dans le forum Oracle
    Réponses: 1
    Dernier message: 13/11/2006, 21h40

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