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 :

Masquer l'affichage d'une modalité dans une proc tabulate


Sujet :

ODS et reporting

  1. #1
    Membre à l'essai
    Homme Profil pro
    Chargé d'études statistiques
    Inscrit en
    Novembre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'études statistiques
    Secteur : Services de proximité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 23
    Points : 15
    Points
    15
    Par défaut Masquer l'affichage d'une modalité dans une proc tabulate
    Bonjour à tous,

    Voici un extrait d'une proc tabulate standard, dans laquelle je souhaite afficher une liste de variables catégorielles en fonction de différentes populations (Population eligible Oui/Non, Population évaluable Oui/Non):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PROC TABULATE DATA=BASE MISSING NOSEPS FORMCHAR (1,3,4,5,6,7,8,9,10,11)=" ƒƒƒƒƒƒƒƒƒ";
      CLASS SEXE ELIGIBLE ELIG_EVAL;
      TABLE SEXE CAT_PROF, ELIGIBLE *(N*F=8. ROWPCTN*F=8.1) ELIG_EVAL*(N*F=8. ROWPCTN*F=8.1) / NOCELLMERGE misstext='0' printmiss; 
      KEYLABEL N="N" ROWPCTN="%" ;
    RUN;

    J'aimerai que les modailtés Non de chaque population ne s'affiche pas.

    Voic un document word avec le résultat actuel et le résultat souhaité. Tableau test.doc

    J'ai essayé de passer par une proc format (cf. discussion ci-jointe) mais ça ne fonctione pas :
    http://www.developpez.net/forums/d13...masquer-ligne/

    Auriez vous une solution?
    Est-il possible d'afficher des instructions where multiples (effectives par variable)?

    Merci d'avance

  2. #2
    Membre actif
    Homme Profil pro
    Analyste - Information médicale
    Inscrit en
    Mars 2012
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste - Information médicale
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2012
    Messages : 72
    Points : 255
    Points
    255
    Par défaut
    Bonjour Pix,

    Pourquoi ne pas "tricher" en mettant ta variable "eligible" à 1 quand elle vaut Oui. Et une variable "ind" à 1 par exemple.
    Ainsi tu ferais un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PROC TABULATE DATA=BASE MISSING;
      CLASS sexe cat_prof;
      VAR eligible ind;
      TABLE sexe cat_prof , eligible="Population eligible" * (sum="N"*f=8.0 pctsum<ind>="%"*f=8.1);
    RUN;
    Bon courage !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chargé d'études statistiques
    Inscrit en
    Novembre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'études statistiques
    Secteur : Services de proximité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Bonjour Fabien,

    Merci pour ta réponse. Je n'avais pas pensé à procéder comme ça, c'est une très bonne solution "détournée".

    Par contre je ne vois pas à quoi sert la variable "ind" que tu utilises dans les pctsum?

  4. #4
    Membre actif
    Homme Profil pro
    Analyste - Information médicale
    Inscrit en
    Mars 2012
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste - Information médicale
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2012
    Messages : 72
    Points : 255
    Points
    255
    Par défaut
    A rien effectivement.
    Une vieille et mauvaise habitude

  5. #5
    Membre régulier
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Février 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2015
    Messages : 42
    Points : 79
    Points
    79
    Par défaut
    Bonjour à vous,

    Je suis également un utilisateur de cette solution "détournée".
    Cependant j'imagine que nous rencontrons également tous un problème avec cette solution partielle : les missing !!
    En effet, quand il y a plusieurs variables qui ont potentiellement chacune des données manquantes, les pourcentages sont faux (car il tiennent compte des "." qui sont au dénominateur) ...
    SAS n'est vraiment pas capable de faire cela via la proc tabulate ??? Ou existe t il une solution que je ne connais pas encore ???

    Merci d'avance, car je pense que ce problème fait perdre un temps considérable dans le reporting à quantité d'utilisateur...

    Guyguy.

  6. #6
    Membre éprouvé
    Avatar de Stackware
    Homme Profil pro
    ArchiDuc de la Sasserie
    Inscrit en
    Juillet 2013
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ArchiDuc de la Sasserie
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2013
    Messages : 439
    Points : 1 017
    Points
    1 017
    Billets dans le blog
    4
    Par défaut
    Bonjour,
    La documentation de la proc tabulate ne renseigne pas sur les options à positionner?

  7. #7
    Membre régulier
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Février 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2015
    Messages : 42
    Points : 79
    Points
    79
    Par défaut
    Malheureusement non, je n'ai pas trouvé... J’espère encore me tromper, ou être passé à côté d'une solution évidente, mais je n'ai jamais trouvé de solution SIMPLE à ce problème pourtant extrêmement simple.

    Je rappelle l'objectif : obtenir dans le même tableau les proportions de "1" des j variables binaires (attention, certaines présentent des valeurs manquantes, mais pas toutes), et par exemple selon le sexe. Il faut donc à la fois réussir à ne pas afficher les effectifs et pourcentages de "0", et surtout réussir à ne pas inclure les "." (missing) dans les dénominateurs (ce qui fausserait évidemment les pourcentages) !!!

    Selon moi il y a de nombreuses solutions envisageables pour contourner le problème... Mais quand le nombre de variables binaires (j dans mon exemple précédant) devient grand mes solutions deviennent extrêmement longues et fastidieuses

    Comme j'imagine que ce problème doit être fréquemment rencontré par les utilisateur SAS, je suppose qu'il existe une solution rapide et simple via la proc TABULATE. Mais peut être faudra t il finalement passer par une autre procédure ? Ou par des macros...

  8. #8
    Membre éprouvé
    Avatar de Stackware
    Homme Profil pro
    ArchiDuc de la Sasserie
    Inscrit en
    Juillet 2013
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ArchiDuc de la Sasserie
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2013
    Messages : 439
    Points : 1 017
    Points
    1 017
    Billets dans le blog
    4
    Par défaut
    Parvenir à expliquer de manière très simple un problème n'en fait pas automatiquement un problème simple... As-tu bien regardé les explications données dans mon lien, puis testé les différentes options? Si oui, alors effectivement il faut chercher une autre voie, certainement adossée à une préparation de données différente qui calcule les résultats sans tabulate, ou en décomposant les différentes étapes pour obtenir ce que tu souhaites. La décomposition apporte parfois des solutions en accumulant les opérations simples mais en multipliant les lignes de code.

  9. #9
    Membre régulier
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Février 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2015
    Messages : 42
    Points : 79
    Points
    79
    Par défaut
    Alors oui j'ai bien regardé ton lien, et ai essayé plusieurs options mais n'ai pas trouvé ce que je cherchais...
    L'une des solutions que je trouve la plus rapide consiste finalement en deux procédures tabulate :
    - la première pour obtenir les effectifs de "1" de chacune des j variables binaires, en utilisant l'astuce citée précédemment par "Fabien G".
    - la deuxième pour obtenir les effectifs des réponses applicables (qui seront donc les dénominateurs ne tenant pas compte des missing). Pour cela je n'oublie pas d'appliquer un format à mes j variables binaires du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    proc format;
    value f_denominateur
    	.="NA"
    	0="Applicable"
    	1="Applicable";
    run;
    Il ne reste alors plus qu'à diviser les valeurs du premier tableau par celles du deuxième (mais pour ça je passe par excel... ce que je trouve vraiment dommage^^ car cela rajoute une source d'erreur potentielle).

    Guyguy.

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

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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