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

ODS et reporting Discussion :

Mot TOTAL tronqué dans la proc report


Sujet :

ODS et reporting

  1. #1
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    543
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 543
    Points : 239
    Points
    239
    Par défaut Mot TOTAL tronqué dans la proc report
    Bonjour,

    Voilà, j'ai un problème tout simple mais qui me semble très compliqué à résoudre.
    Voici un petit exemple avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    proc report data=sashelp.class nowd headline;
    	column Sex Height;
    	define Sex / groups;
    	define Height / sum;
    	rbreak after / summarize skip ol;
    	compute after; Sex='Total'; endcomp;
    run;
    Comme le montre la dernière ligne de la PROC, je cherche à insérer le mot TOTAL à la fin de mon tableau.
    Il ne veut pas puisque la variable SEX a une longueur de 1 caractères.
    Le mot est tronqué ; seul subsiste le 'T'.
    Quelqu'un sait-il comment faire pour que mon total puisse avoir le mot TOTAL ?

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut
    Bonjour,

    Une proposition avec la proc tabulate :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    proc tabulate data=sashelp.class;
      class Sex;
      var Height;
      table (Sex='' ALL= "Total"), (Height * SUM='');
    run;
    Je vous conseille la page : la procédure tabulate, sa vie, son œuvre d'Olivier Decourt .

    Cordialement,

  3. #3
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    543
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 543
    Points : 239
    Points
    239
    Par défaut
    Merci Mgdondon (décidément ! )
    Mais je souhaite vraiment utiliser la proc report et ne pas refaire tous les programmes que j'ai déjà construit avec elle.
    C'est une procédure compliquée que j'ai mis du temps à apprivoiser (pas complètement). Mais elle a des capacités intéressantes.
    Cordialement

  4. #4
    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
    Houaa, la proc report ... il y a longtemps que je ne l'ai pas utilisé :-)

    de mémoire tu dois passer par une colonne calculée si tu ne veux pas modifier tes données d'entrée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    PROC REPORT DATA=sashelp.class NOWD ;
      COLUMNS sex sextotal Height;
      define sex / GROUP NOPRINT;
      define sextotal / COMPUTED "Age";
      define Height / SUM;
      rbreak after / SUMMARIZE ;
      compute sextotal / CHARACTER LENGTH=5 ;
        if _break_="_RBREAK_" then sextotal = "TOTAL" ;
    	else sextotal = sex ;
      endcomp ;
    RUN ;
    Bon courage

  5. #5
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Autre solution pour éviter la variable calculée et la variable cachée dans la solution d'Edward, affecter à SEX une valeur qu'elle n'a pas par ailleurs au niveau de la ligne de récapitulatif (mettons SEX="T" par exemple) et ajouter un format pour habiller la valeur "T" en "TOTAL".
    Bon courage.
    Olivier

  6. #6
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Proc report
    Bonjour,

    Si un jour le cœur vous en dit, je serais intéressée par une fiche sur la proc report dans la série SAS expliqué à ma fille.

    Merci beaucoup pour vos différents tutoriels,

    Cordialement,

  7. #7
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    543
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 543
    Points : 239
    Points
    239
    Par défaut
    Bonjour à tous

    Merci pour vos réponses.
    Revoici le même code avec la solution d'Olivier dont je recommande le livre "Reporting avec SAS".
    Ça fonctionne parfaitement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    proc format; value $Fmt 'T'='Total'; run;
    proc report data=sashelp.class nowd headline;
    	column Sex Height;
    	define Sex / group format=$Fmt.;
    	define Height / sum;
    	rbreak after / summarize skip ol;
    	compute after; Sex='T'; endcomp;
    run;

  8. #8
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    543
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 543
    Points : 239
    Points
    239
    Par défaut
    En fait, ce n'est pas complètement résolu.

    Si je reprends le code précédent en remplaçant la variable Sex par la variable Name qui contient plus de caractères, l'utilisation du format limite l'affichage de la variable Name à la taille du mot "Total", 5 caractères.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    proc format; value $Fmt 'T'='Total'; run;
    proc report data=sashelp.class nowd headline;
    	column Name Height;
    	define Name / width=10 format=$Fmt.;
    	define Height / sum;
    	rbreak after / summarize skip ol;
    	compute after; Sex='T'; endcomp;
    run;
    L'introduction de l'option width ne change rien.
    Une solution est bien sur de modifier la taille de ce mot 'Total' comme ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    proc format; value $Fmt 'T'='Total        '; run;
    proc report data=sashelp.class nowd headline;
    	column Name Height;
    	define Name / format=$Fmt.;
    	define Height / sum;
    	rbreak after / summarize skip ol;
    	compute after; Sex='T'; endcomp;
    run;
    Mais ce n'est pas satisfaisant, ou beaucoup plus compliqué, car je souhaite in fine, enfermer ce type d'instructions dans une macro. Il faudrait alors que je calcule lors de chaque appel de la macro le nombre de blancs nécessaires.

    N'y a-t-il pas une autre solution plus simple ?

Discussions similaires

  1. libellé du total de lignes dans une proc report
    Par enicnath dans le forum ODS et reporting
    Réponses: 2
    Dernier message: 23/07/2010, 08h37
  2. Saut de ligne dans une proc report et ODS tagset.ExcelXP
    Par l'breton du 29 dans le forum ODS et reporting
    Réponses: 2
    Dernier message: 22/07/2009, 19h42
  3. array dans une proc report pour surligner certaines cellules
    Par debdev dans le forum ODS et reporting
    Réponses: 3
    Dernier message: 26/06/2009, 15h31
  4. Saut de ligne dans une proc report (ou print)
    Par nunien22 dans le forum ODS et reporting
    Réponses: 7
    Dernier message: 10/03/2009, 10h11
  5. Afficher les espaces dans une PROC REPORT
    Par Fatah93 dans le forum ODS et reporting
    Réponses: 6
    Dernier message: 07/05/2008, 21h30

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