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 STAT Discussion :

je veux que « les » valeurs de mes variables var1, var2….deviennent des parametres


Sujet :

SAS STAT

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Points : 5
    Points
    5
    Par défaut je veux que « les » valeurs de mes variables var1, var2….deviennent des parametres
    hello

    etant novice sur les macros je voudrais transformer « les » valeurs de mes variables var1, var2….par des parametres.

    Help please...Merci d’avance...



    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    /*implementation date*/
    %macro prod_date;
     
    data date;
          format date yymmddn8.; 
     
            %do i = 0 %to 10;
              date=intnx('month','15jan2010'd,&i,'end'); 
                output;
            %end;
            ;
          run;
          ;
    %mend;
     
    %prod_date;
     
    PROC TRANSPOSE DATA=date 
          OUT=date PREFIX=var;
    QUIT;
     
    /*exemple tout simple que je cherche a automatiser*/
    data testF; 
          set test_20100131 test_20100228 test_20100331; 
    run;
     
     
     
    /****************************en gros de la meme facon que le precedent code, 
    je veux implementer  var1, var2, var3... comme parametre ==> afin d'obtenir 20100131,20100228,20100331,...*/
     
    /*avec un parametre ca marche....mais il faut que je le fasse avec plusieurs parametres*/
     
    proc sql;
          select var1 into: i from date; 
    quit;
     
    data test;
          set vintage.prod_&i;
    run;
     
    /*maintenant a l'implementer avec plusieurs parametres??*/
    %macro plusieursparam;
    proc sql;
    select 
     
     %do i = 1 %to 10;
      var&i
      %end;
     
     %do j = 1 %to 10;
     into: &j 
     %end;
     ;
    from date;
     
    quit;
    %mend;
    %plusieursparam;

  2. #2
    Membre expérimenté
    Avatar de MEGAMIND2
    Homme Profil pro
    Paris
    Inscrit en
    Janvier 2011
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 029
    Points : 1 489
    Points
    1 489
    Par défaut
    Salut,
    Tu n'as pas été clair dans tes explications, j'espere que c'est ce que tu voulais sinon tu l'adapteras en fonction



    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    /*implementation date*/
     
    /**=====> 1ère partie*/
     
    %macro prod_date;
     
    data date;
    format date yymmddn8.; 
     
    %do i = 0 %to 10;
    date=intnx('month','15jan2010'd,&i,'end'); 
    output;
    %end;
    ;
    run;
    ;
    %mend;
     
    %prod_date;
     
     
     
    DATA DATE;
    SET DATE;
    table=COMPRESS("TEST_"!!put(date,yymmddn8.));
    RUN;
     
     
    PROC SQL;
    SELECT COUNT(*) INTO:NB_TABLE FROM date;
    SELECT table INTO:liste_table separated by ' ' FROM date;
    QUIT;
    %put NB=&NB.;
    %put liste_table=&liste_table.;
     
     
     
    DATA stestF; 
    set &liste_table.;
    RUN;
     
    /*=====> 2ème partie*/
     
    PROC TRANSPOSE DATA=date 
    OUT=date(drop=_name_) PREFIX=var;
    QUIT;
     
    proc contents data=date out=out;
    run;
     
    PROC SQL;
    SELECT COUNT(*) INTO:NB  FROM out;
    SELECT name INTO:liste_table separated by ' ' FROM out;
    QUIT;
    %put NB=&NB.;
    %put liste_table=&liste_table.;
     
     
    %MACRO PARAM;
     
    %DO i=1 %TO &NB.;
     
    %LET var&i=%SCAN(&liste_table.,&i.,' ');
     
    PROC SQL;
    CREATE TABLE final_&i.
    as select &&var&i.
    FROM date;
    quit;
     
    %end;
     
    %MEND;
     
    %PARAM;

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Slt,
    Le 1er code est parfait...il me fait meme le compteur de mes dates...nickel
    merci merci merci megamind2!!


    d'ailleurs j'ai reussi a faire un petit truc de mon cote. pas aussi bon que le tien (avec le compteur) mais ca va aussi

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    /*implementation of date*/
    %macro prod_date;
     
    data date;
    	format date yymmddn8.; 
     
    	  %do i = 0 %to 50;
    	    date=intnx('month','15jan2008'd,&i,'end');   /*Initialisation of the date*/
    		output;
    	  %end;
    	  ;
    	run;
    	;
    %mend;
     
    %prod_date;
     
    PROC TRANSPOSE DATA=date
    	OUT=date
    	PREFIX=var;
    	VAR date;
    	RUN;
    QUIT;
     
    %macro plusieursparam;
     
    proc sql;
        select var1 into: I_1 
        from date;
    quit; 
     
    data test; 
        set test_&&I_1;     
    run;
     
    %do i = 2 %to 36;					/*the counter have to don't exceed the number of existing months*/
    proc sql;
        select var&i into: I_&i 
        from date;
    quit; 
     
    data test; 
    	set test test_&&I_&i;     
    run;
     
    %end;
     
    %mend;
     
    %test;

  4. #4
    Membre expérimenté
    Avatar de MEGAMIND2
    Homme Profil pro
    Paris
    Inscrit en
    Janvier 2011
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 029
    Points : 1 489
    Points
    1 489
    Par défaut

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/06/2015, 12h01
  2. [XL-2003] trouver les valeurs de mes variables
    Par Ropie94 dans le forum Excel
    Réponses: 4
    Dernier message: 23/08/2009, 12h53
  3. Sauvegarder les valeurs de mes variables
    Par Mchupakabra dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 23/04/2008, 09h21
  4. Autant de formulaires que la valeur d'une variable
    Par suolan dans le forum Langage
    Réponses: 5
    Dernier message: 12/05/2006, 14h16
  5. afficher les valeurs de la variable post?
    Par jeff1985 dans le forum Langage
    Réponses: 1
    Dernier message: 09/05/2006, 13h31

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