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 :

SAS écrase mes valeurs de macro variable


Sujet :

SAS Base

  1. #1
    Membre du Club
    Femme Profil pro
    Architecte technique
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Points : 46
    Points
    46
    Par défaut SAS écrase mes valeurs de macro variable
    Hello,


    Je viens vers vous car je suis bloquée ça fait des heures :s.. Je vous explique je veux faire des comparaisons entre mes valeurs qui sont dans la macro RSA et les valeurs de la colonne Raison_sociale_acheteur_radiee. Je cherche pas à ce que ça match parfaitement d'où l'utilisation de la fonction complev() ( fuzzy). Je veux que pour la première valeur de la première macro variable je fasse une comparaison entre cette valeur et l'ensemble des valeurs de la colonne Raison_sociale_acheteur_radiee et ainsi de suite. . Ensuite, je veux que si la valeur result est inférieur à 6 alors output (PS: pour l'output si result <6 ça fonctionne bien ..)dans la table résultat avec comme colonne la valeur de la macro variable dans la colonne var , Raison_sociale_acheteur_radiee et la valeur de result.. sauf que quand je lance le programme dans la colonne var je n'ai que la valeur de la dernière macro variable, toutes les précédentes sont écrasées je ne sais pas comment faire. Quelqu'un a une idée? Voici le code



    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
    22
    %macro test;
     
    	%do i=1 %to 1;
    	%let var=&&RSA&i;
     
     
    		data resultat;
    		attrib var length=$50. ;
    		set doublons_radiees (keep=Raison_sociale_acheteur_radiee  );
    			retain var;
    				var = resolve('&&RSA&i');
     
    				result=complev(%upcase('&&RSA&i'), upcase(compress(Raison_sociale_acheteur_radiee,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789','k')));
     
    					if result <6 then do;
    						output ;
    					end;
    		run;
    	%end;
    %mend;
     
    %test;

    merciii beaucoup


    Vaness

  2. #2
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Bonjour Vanessa.
    Une boucle macro, c'est un copier/coller répétitif. Votre code génère N étapes Data successives, qui, toutes, lisent la même table en entrée (DOUBLONS_RADIEES) pour créer la même table en sortie (RESULTAT). Logique que le seul résultat qui demeure soit le dernier.
    En déplaçant la boucle à l'intérieur de l'étape Data ça serait déjà mieux : ciblez le code qui est à répéter (j'imagine de VAR=RESOLVE à OUTPUT ; END et laissez ce qui ne doit être exécuté qu'une seule fois en dehors de la boucle.
    Bon courage.
    Olivier
    Bon courage.
    Olivier

  3. #3
    Membre du Club
    Femme Profil pro
    Architecte technique
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    merci pour ta réponse olivier.decourt. J'ai sorti de la boucle ce qui devait être exécuté une fois mais j'ai toujours le même résultat : sas écrase mes valeurs.. :S

    Vanss

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/07/2013, 16h24
  2. Valeurs d'une macro-variable dans une table SAS
    Par patril dans le forum Macro
    Réponses: 2
    Dernier message: 03/08/2011, 13h23
  3. Réponses: 2
    Dernier message: 06/09/2010, 16h05
  4. [SAS 9.2] Call SymputX : macro-variable non créee
    Par Filippo dans le forum Macro
    Réponses: 2
    Dernier message: 14/01/2010, 11h40
  5. Macro variable avec valeur contenant &
    Par Fatah93 dans le forum Macro
    Réponses: 2
    Dernier message: 19/05/2008, 15h11

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