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 :

Surcharge macro et proc sql


Sujet :

Macro

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2022
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2022
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Surcharge macro et proc sql
    Bonjour,

    Je souhaite faire un calcul en fonction de plusieurs variables dont le nombre peut varier (par exemple en fonction de l'âge et du statut marital, ou en fonction de l'âge, du statut marital et du nombre d'enfant, etc.).
    SAS me renvoi une erreur car il y a trop (ou pas assez) d'argument. Existe-il une solution pour contourner ce problème ?

    Merci !

    %macro somme(variable);

    proc sql ;
    create table sum as
    select &variable.,
    sum(montant)/(365*8/12) as montant
    from bdd
    group by &variable.;
    quit;

    %mend;

    %somme(age, statut)

  2. #2
    Membre éprouvé
    Homme Profil pro
    Statisticien/développeur BI
    Inscrit en
    Janvier 2012
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Statisticien/développeur BI
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 326
    Points : 1 142
    Points
    1 142
    Par défaut
    Bonjour,

    avec : %str(age, statut)

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    482
    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 : 482
    Points : 1 547
    Points
    1 547
    Par défaut
    Bonjour,
    C'est tout à fait normal que le compilateur SAS génère des erreurs car il y'a un seul paramètre défini avec deux valeurs fournies lors de l'appel du Macro-Programme.
    N'oublies pas que les paramètres sont des "macros-variables" , créées et gérées par SAS avec ces valeurs fournies.
    Voici ton code repris et rectifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    data Bdd ;
    set sashelp.class ;
    Montant=floor(ranuni(12345)*100000) ; 
    run ;  
     
    %MACRO Somme(Var1, Var2) ;
    proc sql ;
    create table Sum as
    select &Var1., &Var2., Sum(Montant)/(365*8/12) as Sum_Montant
    from Bdd 
    group by &Var1., &Var2. ;
    quit ;	
    %MEND Somme ;	%Somme(Sex, Age) ;
    Bon Courage
    Ward

Discussions similaires

  1. Macro et proc sql
    Par yedid dans le forum Macro
    Réponses: 5
    Dernier message: 10/01/2013, 09h32
  2. Réponses: 2
    Dernier message: 22/04/2009, 10h47
  3. Réponses: 5
    Dernier message: 12/09/2008, 16h30
  4. [Macro] Libellé macro-variable avec proc sql
    Par auredura dans le forum Macro
    Réponses: 2
    Dernier message: 03/09/2008, 12h46
  5. Erreur %goto et proc sql dans une macro
    Par raf64flo dans le forum Macro
    Réponses: 15
    Dernier message: 17/04/2008, 22h40

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