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

ODS et reporting Discussion :

proc report /sas


Sujet :

ODS et reporting

  1. #1
    Nouveau Candidat au Club
    proc report /sas
    Bonjour la communauté, je viens de bébuter sur sas et je recontre un petit soucis j'aimerais avoir un tableau (voir capture ).

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    data x;
    set classe1;
     if modele = 'Clio / 2016 / 5P / Berline' then modele_Promo = 'Clio'; 
     if modele = 'Clio / 2019 / 5P / Berline' then modele_Promo = 'Clio'; 
     if modele = 'Clio 5p Berline' then modele_Promo = 'Clio';
     if modele = 'Clio Estate 5p Break' then modele_Promo = 'Clio'; 
     if modele = 'Kadjar / 2018 / 5P / Crossover' then modele_Promo = 'Kadjar'; 
     if modele = 'Kadjar 5p Crossover' then modele_Promo = 'Kadjar';
     if (date >="01sep2019"D) and (date <= "03oct2019"D) then Periode = 'N';
     if (date >="01sep2018"D) and (date <= "03oct2018"D) then Periode = 'N-1';
     run;

    j'aimerais qu'il me compte le modele-promo 'clio' et kadjar en fonction de la chaque periode.
    j'avais fait un proc tabulate qui avait marché mais je pouvais pas rajouter une colonne calculer evolution dont la formule est: (N-(N-1))/(N-).
    on m'a dit de faire un proc report mais j'y arrive pas car il compte mal.

    ci_joint: le fichier en exemple et la sortie souhaitée
    cdt,

  2. #2
    Expert confirmé
    Bonjour.
    Si tu ne nous proposes pas ton code (si possible sur une table qui permet de l'exécuter chez nous aussi, avec des données exemple ; SASHELP.PRDSALE semble correspondre à la forme de ton tableau, avec COUNTRY en lignes et YEAR en colonnes), comment peut-on te dire pourquoi ta proc Report "compte mal" ?
    Bon courage.
    Olivier

  3. #3
    Nouveau Candidat au Club
    Bonjour olivier,
    j'ai joint un fichier Excel et le type de sortir que je souhaite avoir.
    (exemple fictive).
    voici ce que j'avais faire avec proc tabulate :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PROC TABULATE DATA = x2;
    CLASS modele_Promo marque Periode total/missing;
    TABLE (modele_Promo total) * (N="nombre de vehicule" PCTN="Pourcentage"), (Periode total);
    RUN;

    mais je n'arrive rajouter une colonne (evolution [N-(N-1))/(N-1)]) en %

  4. #4
    Nouveau Candidat au Club
    voici la sortir que j'ai avec tabulate, du coup j'aimerais rajouter la colonne calculée evolution

    merci pour l'aide

  5. #5
    Expert confirmé
    Avec la proc REPORT on pourrait faire comme ça :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    PROC REPORT DATA=sashelp.prdsale ;
      COLUMNS country year,actual evol ;
      DEFINE country / GROUP ;
      DEFINE year / ACROSS "" ;
      DEFINE actual / ANALYSIS SUM "" ;
      DEFINE evol / COMPUTED FORMAT=PERCENTN32.1 ;
      COMPUTE evol ;
         evol = _c3_/_c2_ - 1 ;
      ENDCOMP ;
    RUN ;

    Avec Tabulate c'est effectivement compliqué d'obtenir l'évolution directement. Mais il reste la solution de calculer tous les agrégats à l'avance (proc Means ou SQL) puis transposer pour avoir les deux années en colonnes, et une étape Data pour l'évolution. Dans ce cas on peut avoir une jolie mise en forme croisée avec Tabulate sur des données où tous les calculs sont déjà faits (on demandera des SUM bidons pour transmettre les valeurs dans le tableau).
    Bon courage.
    Olivier