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 :

Proc report: group sur une variable suivie de variables numériques => SAS me les additionne


Sujet :

ODS et reporting

  1. #1
    Membre actif
    Inscrit en
    Janvier 2005
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 629
    Points : 203
    Points
    203
    Par défaut Proc report: group sur une variable suivie de variables numériques => SAS me les additionne
    Bonjour,

    Connaissez vous le bug suivant sous SAS ?
    Enfin, j'appelle ça un bug, mais si ça se trouve, il y a une option dans la proc report pour que cela ne se produise pas ...

    J'ai le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    proc report data=maTable nofs split = "$" headskip missing;
    	column grp id visit datev valNum1 valNum2 valNum3;
    	define grp 		/ style=[cellwidth=3.5 cm] left flow group id;
    	define id 		/ style=[cellwidth=1.3 cm] left flow group id;
    	define visit 		/ style=[cellwidth=2 cm] left flow group;
    	define datev 		/ style=[cellwidth=2 cm] left flow group;
    	define valNum1 		/ style=[cellwidth=2 cm] left flow;
    	define valNum2 		/ style=[cellwidth=2 cm] left flow;	
    	define valNum3 		/ style=[cellwidth=2 cm] left flow;
    run;
    Je fais un groupe sur datev
    => comme les colonnes suivantes sont toutes numériques, SAS me les additionne !

    Pour le moment, je modifie donc le code en ajoutant une variable caractère a que je n'affiche pas mais que je place juste après datev
    => ça marche: ça regroupe bien les dates et ça ne m'additionne pas les valeurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    proc report data=maTable nofs split = "$" headskip missing;
    	column grp id visit datev a valNum1 valNum2 valNum3;
    	define grp 		/ style=[cellwidth=3.5 cm] left flow group id;
    	define id 		/ style=[cellwidth=1.3 cm] left flow group id;
    	define visit 		/ style=[cellwidth=2 cm] left flow group;
    	define datev 		/ style=[cellwidth=2 cm] left flow group;
    	define a 		/ noprint ;
    	define valNum1 		/ style=[cellwidth=2 cm] left flow;
    	define valNum2 		/ style=[cellwidth=2 cm] left flow;	
    	define valNum3 		/ style=[cellwidth=2 cm] left flow;
    run;

    Est ce un bug de SAS ?
    Ou bien y a t-il une option pour cela ?

    Je vous remercie de votre aide.

  2. #2
    Membre éprouvé
    Avatar de steelspirit
    Homme Profil pro
    SAS discute
    Inscrit en
    Janvier 2008
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SAS discute
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 472
    Points : 916
    Points
    916
    Par défaut
    Bonjour debdev,

    En effet, par défaut, la proc report produit un rapport aggrégé sur des variables numériques.

    Dans les define ajoute l'option ORDER qui permet de produire un listing.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define grp 		/ ORDER style=[cellwidth=3.5 cm] LEFT flow GROUP id;
    Bon courage,

    Steel
    Avant de poser votre question, n'oubliez pas :
    FAQ, SAS DOC et de ce forum

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 113
    Points : 107
    Points
    107
    Par défaut
    L'option group dans la proc report est crée pour faire des agrégats (enfin normalement)
    Donc si tu ne rajoutes pas de sum ou autre tu peux les enlever car je pense que dans la log tu dois avoir un message du type "groups not created...". non ?

  4. #4
    Membre actif
    Inscrit en
    Janvier 2005
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 629
    Points : 203
    Points
    203
    Par défaut


    TROP COOL !

    Merci steelspirit pour cette option.

    @ lhonolulu: oui tu as raison, j'ai ce message dans la log mais j'ai demandé à un collègue qui m'a dit que ce n'était pas grave. Dans mon code, si mon collègue (et donc moi aussi) met l'option group, c'est pour ne pas que la donnée soit répétée sur chaque ligne. exemple:
    j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ligne 1 : personne 1 - date 1 - test 1
    ligne 2 : personne 1 - date 1 - test 2
    ligne 3 : personne 1 - date 1 - test 3
    ligne 4 : personne 2 - date 2 - test 1
    ligne 5 : personne 2 - date 2 - test 2
    ligne 6 : personne 2 - date 2 - test 3
    et ça affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    personne 1	date 1	test 1
    			test 2
    			test 3
    personne 2	date 2	test 1
    			test 2
    			test 3
    y'a peut etre une vraie option qui le fait dans proc report mais je ne la connais pas (je n'ai pas encore étudié la proc report, donc je copie sur mes collègues )


    Merci à tous les 2.

    Bonne après midi.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 113
    Points : 107
    Points
    107
    Par défaut
    De mémoire ça ne fera pas répéter l'itération.
    Order sans rien, par défaut affiche dans l'ordre d'apparition dans la table. Mais, à ce qui paraît ca risque de changer. Donc il faut mieux rajouter order order = data

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 113
    Points : 107
    Points
    107
    Par défaut
    Nb : l'option group tu peux l'enlever dans ton code et tu auras je pense le même résultat

  7. #7
    Membre actif
    Inscrit en
    Janvier 2005
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 629
    Points : 203
    Points
    203
    Par défaut
    Je viens de voir ta réponse lhonolulu.

    Ok pour l'option order, j'essaierai. Par contre, pour group, j'ai déjà essayé sans, mais ça ne donne pas la même chose qu'avec. Donc je vais le laisser même si c'est du bidouillage

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

Discussions similaires

  1. Limitation du nombre d'accel group sur une fenetre
    Par kenshi240683 dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 29/08/2008, 10h37
  2. [Jasper Report] Graphique sur une seule ligne de données
    Par RR instinct dans le forum Jasper
    Réponses: 3
    Dernier message: 13/11/2007, 11h02
  3. [VBA-E] COUNTIF sur une sélection de plage variable
    Par NiKoS29 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/09/2007, 23h03
  4. Compléter les trous d'une requête groupée sur une durée
    Par apoingsfermes dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/01/2007, 19h47
  5. [RaveReport] - Bloquer groupe sur une page
    Par muaddib dans le forum Rave
    Réponses: 3
    Dernier message: 25/02/2003, 16h21

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