1. #1
    Futur Membre du Club
    Femme Profil pro
    Statisticien
    Inscrit en
    novembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : novembre 2016
    Messages : 5
    Points : 6
    Points
    6

    Par défaut Macro pour mettre à zéro toutes les variables

    Bonjour,

    J 'ai une table qui contient plus d'un millier de variables. Ces variables ont des valeurs différentes.
    Je souhaiterai, pour une liste de variables définies (par exemple z3gf zzzz47 fd28 ghu98), les conserver en les renommant dans un premier temps puis mettre à zéro les variables initiales.

    J'ai cherché à écrire une macro qui pouvait correspondre mais je ne vois pas comment faire.

    J'ai une macro qui me définit la liste des variables que je souhaite mettre à zéro.
    Ensuite, je voulais faire un rename mais je ne sais pas comment le faire sur ces seules variables etsurtout, mon plus gros problème, mettre ensuite les variables initiales à zéro.

    J'espère avoir été clair dans mes explications.

    Merci d'avance pour l'aide que vous pourrez m'apporter.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    janvier 2013
    Messages
    395
    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 : 395
    Points : 1 362
    Points
    1 362

    Par défaut

    Bonjour,
    Si, j'ai bien compris ce code peut répondre à votre problématique.
    Essayez de paramétrer, également, le nombre de variables souhaitées à renommer par votre macro qui a créer la liste.

    On suppose ici que la liste des variables à renommer (A B C) est créée par la macro instruction %Let.
    Le nom de la macro variable s’appelle VARS.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    %LET VARS=A B C ;
    %MACRO RENAME ;
    DATA  Nvl_Base ; 
    SET Tabase ;
    	%DO I=1 %TO 3  ; 
     	%LET RENVAR = %SCAN (&VARS, &I, ' ') ;
    	 R_&RENVAR = &RENVAR ;
    	 &RENVAR = 0 ; 
    	%END;				
    RUN;
    %MEND RENAME ;	%RENAME ;

    Cdt Ward

  3. #3
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    février 2011
    Messages
    1 616
    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 616
    Points : 3 396
    Points
    3 396

    Par défaut

    Hello,
    Une autre solution possible. Si t'as la liste de tes variables à mettre à 0, alors tu peux utiliser array :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    %let var= age height ;
    data sortie;
    set sashelp.class;
    array a &var;
    *array a _numeric_; *si tu veux transformer toutes les variables numériques ;
    *array a _character_; *si tu veux transformer toutes les variables caractères ;
    do over a;
    a=0;
    end;
    run;
    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

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    janvier 2013
    Messages
    395
    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 : 395
    Points : 1 362
    Points
    1 362

    Par défaut Macro pour mettre à zéro toutes les variables initiales en les renommant dans un 1er temps

    Citation Envoyé par festnicholls Voir le message
    Je souhaiterai, pour une liste de variables définies (par exemple z3gf zzzz47 fd28 ghu98), les conserver en les renommant dans un premier temps puis mettre à zéro les variables initiales.
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    %LET VARS=Age Height Weight ;
    %MACRO RENAME ;
    DATA Sortie ; 
    SET sashelp.class ;
    	%DO I=1 %TO 3 ; 
     	%LET RENVAR = %SCAN (&VARS, &I, ' ') ;
    	 R_&RENVAR = &RENVAR ;
    	 &RENVAR = 0 ; 
    	%END;				
    RUN;
    PROC PRINT DATA=Sortie ; RUN ;
    %MEND RENAME ;	%RENAME ;
    Ward

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Statisticien
    Inscrit en
    novembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : novembre 2016
    Messages : 5
    Points : 6
    Points
    6

    Par défaut

    Bonjour,

    Je vous remercie pour vos réponses.

    Je vais les tester et je vous tiens au courant.

    Merci en tout cas d'avoir consacré du temps pour me répondre.

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Statisticien
    Inscrit en
    novembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : novembre 2016
    Messages : 5
    Points : 6
    Points
    6

    Par défaut

    Je vous remercie car, avec votre aide, mon problème est résolu.

    Cordialement

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

Discussions similaires

  1. [AC-2010] Mettre à zéro toutes les cases à cocher d'un champ
    Par car23 dans le forum VBA Access
    Réponses: 8
    Dernier message: 31/10/2016, 19h51
  2. Réponses: 3
    Dernier message: 14/11/2009, 09h26
  3. Réponses: 2
    Dernier message: 17/04/2008, 14h27
  4. Macro pour mettre à jour tous les TCD
    Par kimai81 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 07/03/2008, 21h55
  5. Réponses: 9
    Dernier message: 19/09/2006, 22h54

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