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 - L'option GROUP ne fonctionne pas avec des données manquantes


Sujet :

ODS et reporting

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 347
    Points : 235
    Points
    235
    Par défaut PROC REPORT - L'option GROUP ne fonctionne pas avec des données manquantes
    Bonsoir à toutes et à tous,

    Voici un exemple simplifié de mon problème. J'ai plusieurs lignes par individus et je souhaite alléger tout ça (en gros, une ligne par caractéristique recueillie). Il y a deux visites d'où les variables date1 et date2. Chaque participant a la même date de visite sur chaque ligne, et je souhaite ausis donc par conséquent qu'elle n'apparaisse qu'une seule fois. L'individu 2 n'a pas réalisé sa seconde visite et n'a donc pas de date :

    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
    data t1;
    input ident var1 date1 date2;
    cards;
    1	50	5	1
    1	45	5	1
    1	29	5	1
    1	40	5	1
    2	02	2	.
    2	12	2	.
    2	14	2	.
    2	05	2	.
    ;
    run;
     
    data t2;
    input ident var1 date1 date2;
    cards;
    1	50	5	1
    1	45	5	1
    1	29	5	1
    1	40	5	1
    2	02	2	99
    2	12	2	99
    2	14	2	99
    2	05	2	99
    ;
    run;
     
    proc report data=t1 NOWD split="#" headskip spacing=2 headline;
    column 	("Identifiant" ident)
    		("Variables" var1)
    		("Dates" date1 date2)
    		;
    define ident 	/ display "N°" 			style(column)=[cellwidth=2.0cm just=left] style(header)=[just=left] group;
    define var1		/ display "Variable 1"	style(column)=[cellwidth=2.0cm just=left] style(header)=[just=left];
    define date1	/ display "Date 1"	style(column)=[cellwidth=2.0cm just=left] style(header)=[just=left] group;
    define date2	/ display "Date 2"	style(column)=[cellwidth=2.0cm just=left] style(header)=[just=left] group;
    run;
     
    proc report data=t2 NOWD split="#" headskip spacing=2 headline;
    column 	("Identifiant" ident)
    		("Variables" var1)
    		("Dates" date1 date2)
    		;
    define ident 	/ display "N°" 			style(column)=[cellwidth=2.0cm just=left] style(header)=[just=left] group;
    define var1		/ display "Variable 1"	style(column)=[cellwidth=2.0cm just=left] style(header)=[just=left];
    define date1	/ display "Date 1"	style(column)=[cellwidth=2.0cm just=left] style(header)=[just=left] group;
    define date2	/ display "Date 2"	style(column)=[cellwidth=2.0cm just=left] style(header)=[just=left] group;
    run;
    Existe-t-il un moyen de palier ce problème sans devoir imputer ? Ça fonctionne de la même variables pour des variables caractères avec une donnée manquante " ".

    Merci pour votre aide,

    alers

  2. #2
    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 : 47
    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
    Bonjour Alers.
    Je ne suis pas sûr de comprendre vraiment quel est ton besoin. Mais si tu as des valeurs manquantes dans tes données et que tu veux que ce soit une valeur comme les autres dans ton tableau, tu dois ajouter l'option MISSING dans le DEFINE de la variable qui les contient (ou dans les DEFINE de toutes les variables qui en contiennent).
    Dans ton exemple, il y a à la fois des DISPLAY et GROUP dans les DEFINE de tes variables : quel rôle veux-tu vraiment leur donner ? Si c'est GROUP, le DISPLAY n'est pas nécessaire.
    Bon courage.
    Olivier

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 347
    Points : 235
    Points
    235
    Par défaut
    Bonjour et merci.

    En fait j'avoue ne pas être un grand connaisseur de la PROC REPORT. J'ai vu que l'option GROUP pouvait répondre à mes besoins. En quoi est-elle incompatible avec DEFINE ?

    En gros, ce que je veux vraiment ce serait passer de ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Identifiant          Caractéristique          Valeur          Date
    1                      Taille                       140             20/01/2014
    1                      Poids                       65               20/01/2014
    2                      Taille                       155             25/01/2014
    2                      Poids                       64               25/01/2014
    à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Identifiant          Caractéristique          Valeur          Date
    1                      Taille                       140             20/01/2014
                            Poids                       65               
    2                      Taille                       155             25/01/2014
                            Poids                       64
    Alléger le tout.

  4. #4
    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 : 47
    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
    Les options DISPLAY, GROUP, ANALYSIS, ACROSS, COMPUTED et ORDER sont des rôles affectés aux différentes variables du rapport via l'instruction DEFINE. On ne peut attribuer qu'un seul rôle à une colonne, donc la syntaxe DEFINE var / DISPLAY ... GROUP ; n'est pas cohérente et un des deux rôles (sans doute DISPLAY) sera ignoré.
    DISPLAY affiche la variable dans le détail comme le ferait une proc PRINT.
    GROUP évite les répétitions de valeurs dans le tableau final, c'est vrai, mais sert surtout à organiser des statistiques (c'est l'équivalent du GROUP BY en SQL ou du CLASS/BY dans proc MEANS).
    Je crois que le rôle ORDER te conviendrait mieux : il évite également les répétitions de valeurs consécutives mais les autres variables du rapport peuvent être DISPLAY : si tous tes calculs sont déjà faits en amont, c'est le mieux.
    Sinon, il faut prévoir des statistiques (rôle ANALYSIS) pour les variables à agréger, et des rôles GROUP pour toutes les autres. Et du coup plus de DISPLAY.
    Bon courage.
    Olivier

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/08/2010, 15h33
  2. sort by ne fonctionne pas avec des subtables
    Par ekremyilmaz dans le forum JSF
    Réponses: 1
    Dernier message: 27/07/2010, 13h17
  3. Réponses: 4
    Dernier message: 05/06/2008, 18h14
  4. [Make] ne fonctionne pas avec des .cpp
    Par Jean_Benoit dans le forum Systèmes de compilation
    Réponses: 3
    Dernier message: 19/09/2006, 21h32
  5. [VBA-Excel] Tri de listview ne fonctionne pas avec des nombres à virgule
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/09/2006, 15h32

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