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

  1. #1
    Futur Membre du Club
    Récupérer éléments d'une procédure FREQ
    Bonjour,
    je suis confronté à un soucis sur un code SAS. Il est assez complexe à expliquer mais j'espère fortement que vous allez me comprendre.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    proc freq noprint data=base_fin ;
    		table mois /out=freq  ;
    	run;
    	data _null_;
    		set freq(where=(mois ne ""));
    		call symput("N",_N_) ;
    		call symput("mac"||left(put(_N_,2.)),mois) ;
    	run;


    grâce à ce programme j'ai pu récupérer les éléments de la table Freq dans la macro variable &mac qui sont des dates du format Annéesmois : 201707,201708 etc...
    dans une proc report je souhaite parcourir ces éléments (ces dates qui sont déjà en colonne dans ma table) j'utilise le code suivant :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
     %do i=&mac1 %to &mac1+&N-1; Mois_&i %end ;


    pour dire en gros que le i parcourant mac1 à mac1+11 (un truc sur 12 mois quoi).*


    résultat que je souhaite avoir c'est :

    201807 201708 201709 201710 201711 201712 201801 201802 ---------

    mais sauf que ce que j'obtiens c'est

    201807 201708 201709 201710 201711 201712 201713 201714 ---------


    c'est comme si ma macrovariable
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    &mac7 = 201713


    pourtant quand je vérifie j'ai bien &mac7=201801.


    je ne sais pas comment régler ce détails..



    PS : difficile à expliquer comme ça mais j'espère que vous me comprenez et pourrez m'aider.
    Merci d'avance pour vos réponses.

  2. #2
    Membre éprouvé
    Bonjour,

    Pas sûr d'avoir compris le sujet:

    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
     
    data test;
    input mois yymmn6.;
    format mois yymmn6.;
    cards;
    201707 
    201708 
    201709 
    201710 
    201711 
    201712 
    201801 
    201802 
    201803
    201804
    ;
    run;
     
    data _null_;
    set test;
    call symputx('nbr', _n_);
    call symputx("mac"||left(put(_N_,2.)),put(mois,yymmn6.)) ;
    run;
     
    %macro affichage();
    %do i=1 %to &nbr;;
    %put mois= &&mac&i;
    %end;
    %mend affichage;
    %affichage;


    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia.fr/certifications/session-decembre-2015-niveau-avance?uid=162

###raw>template_hook.ano_emploi###