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 :

Comparer deux proc tabulate


Sujet :

ODS et reporting

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2011
    Messages : 85
    Points : 45
    Points
    45
    Par défaut Comparer deux proc tabulate
    Bonjour à tous,
    pour mon stage je dois réaliser un programme sas permettant de comparer la pop française à une population défini. pour cela j'ai réaliser 2 proc tabulate permettant d'avoir les résultats attendus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    proc tabulate data = ...popfr
    class revenu age pcs stat aglo ...;
    var popfr;
    table ( revenu age pcs stat aglo ...), (popfr)*(pctsum);
    weight poids;
    run;
    
    proc tabulate data = ...popcarrefour
    class revenu age pcs stat aglo ...;
    var popcarrefour;
    table ( revenu age pcs stat aglo ...), (popcarrefour)*(pctsum);
    weight poids;
    run;
    Mais 2 proc réalisé maintenant j'aimerais associer ces proc pour n'en faire plus qu'une. et ainsi pouvoir les comparer.
    mais qu'en je réalise mon étape data avec un merge...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    data poptot;
    merge popcarrefour 
             popfr;
    by num;
    run;
    il y a bien une table qui se crée avec les 2 colonnes que je souhaitais avoir mais impossible de contenir les différentes modalités dans une même colonne comme en réalisant une simple proc tabulate
    exemple :

    je souhaiterais avoir ceci

    ...............popfr ........popcarrefour
    15_25.......20% ..............15%
    26-35.......10% ..............10%
    artisan
    commercant
    salarié
    bordeaux
    ...


    ce que j'ai comme configuration

    age ......pcs..................aglo ........popfr........popcarrefour
    15-25........................................20% ............15%
    26-35 .......................................10% ............10%
    ............ artisan ....
    ............commerçant
    ............ salarié
    ..............................bordeaux
    quelqu'un aurait'il une solution à mon probléme ??

    merci

  2. #2
    Membre expérimenté
    Avatar de MEGAMIND2
    Homme Profil pro
    Paris
    Inscrit en
    Janvier 2011
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 029
    Points : 1 489
    Points
    1 489
    Par défaut
    Bonjour,
    Le plus facile serait d'indexer tes variables numérique par _popfr et _popcarrefour dans les deux tables (garder les variables qualitatives tel quelles) et te débrouiller à fusionner les 2 tables et appliquer sur cette table juste une proc tabulate.

  3. #3
    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
    Bonjour Antoine.
    Comme Brice, je te proposerais le mode opératoire suivant :
    1) agréger tes données avec des procs MEANS dans le genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    PROC MEANS DATA=..popfr /* ou popcarrefour selon le cas */
                      NWAY NOPRINT ;
       VAR popfr /* ou popcarrefour */ / WEIGHT = poids ;
       CLASS revenu age pcs stat aglo ... ;
       OUTPUT OUT=work.stats_fr (DROP=_type_ _freq_) SUM= ;
    RUN ;
    tu obtiens 2 tables avec les mêmes colonnes sauf le total pondéré de population.
    2) faire un MERGE pour obtenir une table avec toutes tes variables de CLASS et 2 colonnes supplémentaires pour les totaux pondérés.
    3) la proc TABULATE se faire ainsi (j'ai pris d'autres données mais la logique est la même)...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    PROC TABULATE DATA=sashelp.prdsale ;
      CLASS country product ;
      VAR actual predict ;
      TABLE (country product ALL),
            (actual predict)*PCTSUM ;
    RUN ;
    Au final, tout cela est tellement proche de ton mode opératoire actuel que je me demande si je ne passe pas à côté d'une subtilité...
    Olivier
    Bon courage.
    Olivier

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 29
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    Si j'ai bien compris ton poblème, tu as plusieurs variables (commune, age, ...) et tu souhaites en obtenir une seule regroupant tous les types de population.
    Je penses donc que le code suivant devrait te satisfaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    data type_poptot;
    set poptot;
    type_pop=compress(age||revenu||pcs||stat||aglo||... ); 
    type_pop=compress(tranwrd(type_pop,'.','')); /*on supprime les '.' qui serait dû à des variables numériques*/
    run;
    On peut surement faire mieux mais je pense que c'est le plus simple pour répondre à ton problème.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2011
    Messages : 85
    Points : 45
    Points
    45
    Par défaut
    merci beaucoup à vous tous pour vos réponses, cela m'as bien aidé.
    bonne continuation.

    et à bientôt

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

Discussions similaires

  1. Colorer une ligne sur deux Proc Tabulate
    Par Deciprog dans le forum ODS et reporting
    Réponses: 2
    Dernier message: 22/03/2009, 10h45
  2. comment comparer deux dates?
    Par billoum dans le forum C++Builder
    Réponses: 2
    Dernier message: 21/08/2004, 21h08
  3. [STRUTS] Tag Equal, comparer deux variables
    Par logica dans le forum Struts 1
    Réponses: 2
    Dernier message: 04/06/2004, 12h01
  4. comparer deux string
    Par jul54 dans le forum MFC
    Réponses: 3
    Dernier message: 22/04/2004, 15h50
  5. [date] Comparer deux formats différents
    Par terziann dans le forum Requêtes
    Réponses: 17
    Dernier message: 21/07/2003, 15h21

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