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 :

Nombre d'observations et pourcentages dans un tableau SAS


Sujet :

ODS et reporting

  1. #1
    Futur Membre du Club
    Nombre d'observations et pourcentages dans un tableau SAS
    Bonjour,
    Je chercher à réaliser un tableau qui donnerait le nombre de personnes présentes dans ma table (ID), le nombre de personnes ayant commencé la course à pieds (START) et le nombre l'ayant terminée (END) par pays (COUNTRY) et mois (MONTH). Le tableau donnerait aussi donner le pourcentage de personnes ayant commencé la course par rapport au nb total de personnes (idem pour la variable END). En pièce jointe, vous trouverez le tableau attendu.

    Voici quelques données :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DATA test;
    input id start end country $ time $;
    datalines;
    1 3 6 FR FEB
    2 5 8 US FEB
    3 3 . FR FEB
    4 . . FR JAN
    5 . . US JAN
    RUN;


    (les chiffres de START et END correspondent aux heures de départ et d'arrivée)

    Je n'ai pas encore trouvé de solution me permettant de réaliser ce tableau "atypique". J'ai essayé avec un PROC FREQ et un PROC REPORT mais cela me donne les effectifs par modalités et non pas globaux. Par ailleurs le PROC MEANS ne me permet pas d'avoir les pourcentages voulus. Avez-vous quelques idées à me suggérer ?

    D'avance merci,
    Garpe


  2. #2
    Expert confirmé
    Bonjour.
    On peut produire ce tableau avec la proc Tabulate.
    Petite astuce pour le pourcentage, il faut personnaliser le dénominateur : PCTN<start>.
    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
    DATA test;
    input id start end country $ time $;
    datalines;
    4 . . FR JAN
    5 . . US JAN
    1 3 6 FR FEB
    2 5 8 US FEB
    3 3 . FR FEB
    RUN;
    PROC TABULATE DATA=work.test ;
      CLASS country time / ORDER=DATA ;
      VAR id start end ;
      TABLE (id start end),
            (time="" * (country="" ALL="Total"))*
    		(N="n" PCTN<start>="%") / MISSTEXT=" " ;
    RUN ;
    Bon courage.
    Olivier

  3. #3
    Futur Membre du Club
    Bonjour Monsieur,
    Merci beaucoup pour votre réponse, cette solution est idéale! Je note l'astuce pour changer le dénominateur, je ne connaissais pas.

    Bien à vous,
    Garpe